SoftwareArchitekt.at | Manfred Steyer | .NET-Trainings | Berater, Trainer, Autor, Dozent

 

Soft-Delete mit Entity Framework 6.1

Seit Entity Framework 6.1 können Entwickler mit CommandTreeInterceptoren SQL-Anweisungen abfangen und abändern. Im Gegensatz zu den CommandInterceptoren, die bereits mit 6.0 zur Verfügung standen, stellen CommandTreeInterceptoren die SQL-Anweisung nicht in Form eines Strings sondern in Form eines Syntax-Baumes dar. Dies vereinfacht das Abändern der Anweisung. Auf diese Weise lassen sich globale Filter definieren. Ein solcher globaler Filter könnte zum Beispiel festlegen, dass nur Datensätze mit einem bestimmten Status oder nur Datensätze eines bestimmten Mandanten geladen werden. Dazu müsste der Interceptor jeder Abfrage um eine entsprechende Einschränkung erweitern. [Mehr]

Stored Functions mit Entity Framework Code First nutzen

Während Entity Framework prinzipiell mit Stored Functions bzw. Table Valued Functions, die innerhalb von Abfragen eingesetzt werden können, umgehen kann, hat diese Möglichkeit noch nicht den Weg in die Welt von Code First geschafft. Allerdings können Entwickler seit Entity Framework 6.1 auf die Mapping API zugreifen. Dabei handelt es sich um ein Objektmodell, welches in vergangenen Versionen lediglich interne zur Verfügung stand und sowohl lesenden als auch schreibenden Zugriff auf das Entity Data Model gewährt. Dies kann man sich zunutze machen, um eine Unterstützung für Stored Functions bzw. Table Valued Functions zu implementieren. Da das Entity Data Model und seine Repräsentation durch die Mapping API recht komplex sind, handelt es sich bei dieser Aufgabe nicht um etwas, das man nebenbei erledigen kann.

Glücklicherweise hat sich darum bereits jemand angenommen und das Ergebnis dieses Unterfangens als freies Projekt bereitgestellt. Dieses findet man unter [4]. Es bietet für die Konfiguration von Sotred Functions bzw. Table Valued Functions in Code-First-Szenarien eine einfache API, welche die Komplexität der Mapping-API verbirgt. Jenen, die wissen möchten, wie dieses Projekt die Mapping-API verwendet oder nicht von einem externen Projekt abhängig sein wollen, bietet dieser Beitrag eine nähere Beschreibung des von diesem Projekt verfolgten Ansatzes. [Mehr]

EF 6.1: Datenbanksitzung mit IDbConnectionInterceptor mit Custom-SQL initialisieren

Entity Framework 6.1 bringt eine ganze Menge neuer Interceptoren, mit denen der Entwickler seine eigenen Routinen einklinken kann. Einer davon ist der DbConnectionInterceptor, der Methoden anbietet, die zum Beispiel Entity Framework vor sowie nach dem Öffnen bzw. Schließen einer Datenbankverbindung ausführt.

Mit diesem Interceptor kann der Entwickler Entity Framework anweisen, im Zuge jedes Verbindungsaufbaus bestimmte Befehle an die Datenbank zu senden. Das könnten Befehle zum Initialisieren der Verbindung sein oder Befehle, die temporäre Tabellen erzeugen. Ob letzteres von guter Architektur zeugt, sei an dieser Stelle dahingestellt.

Um einen DbConnectionInterceptor bereitzustellen, implementiert der Entwickler ... [Mehr]

Validieren internationalisierter Eingaben mit AngularJS

Während AngularJS die Internationalisierung von Ausgaben erlaubt, bietet es (derzeit noch) keine Unterstützung für das Erfassen von Eingaben, die internationalisiert vorliegen. Allerdings gibt AngularJS dem Entwickler die Möglichkeit, benutzerdefinierte Validatoren festzulegen. Daneben kann der Entwickler angeben, wie die erfassten Eingaben für die Verwendung im Model aufzubereiten sind. Somit kann zum Beispiel der von einem deutschen Benutzer erfasste String „47,11“ im Model durch eine Eigenschaft vom Typ number mit dem Wert 47.11 repräsentiert werden.

Zum Definieren eigener Validatoren implementiert der Entwickler... [Mehr]

Inhaltsverzeichnis zu "Moderne Web-Anwendungen mit ASP.NET MVC und JavaScript"

In wenigen Tagen geht unser Buch "Moderne Web-Anwendungen mit ASP.NET und JavaScript" in den Druck. Das Ziel dieses Buches ist es, .NET-Entwicklern einen Technologie-Mix zur Entwicklung moderne JavaScript-basierter Web-Anwendungen zu präsentieren. Nachfolgend platziere ich jetzt mal das finale Inhaltsverzeichnis. [Mehr]

Vorwort zu unserem Buch "Moderne Web-Anwendungen mit ASP.NET MVC und JavaScript"

Die Texte zur stark erweiterten und aktualisierten 2. Auflage unseres Buches „Moderne Webanwendungen mit ASP.NET MVC und JavaScript“ sind fertig und mir liegt auch schon ein PDF davon zur letzten Durchsicht vor. Um sich davon einen Überblick zu machen, poste ich hier mal das Vorwort, das neben einem Überblick zum Inhalt auch die Zielgruppe des Buches und die Änderungen zur ersten Auflage beschreibt. Damit man weiß, was man sich davon erwarten kann, beschreibt das Vorwort auch die Ziele und Nicht-Ziele. [Mehr]

Ein einfacher OAuth-2.0-Authorization-Server für ASP.NET MVC und Web API mit Katana

Mittels Katana, der OWIN-Implementierung von Microsoft, die beim Einsatz von Visual Studio 2013 ohne Zutun des Entwicklers eingebunden wird, kann auf einfache Weise eine OAuth 2.0-Implementierung geschaffen werden. Katana bringt dazu eine Middleware für Autorisierungsserver sowie eine weitere für Ressourcenserver bzw. für solche Clients mit, die OAuth 2.0 für die Authentifizierung verwenden. Erstere nennt sich OAuthAuthorizationServerMiddleware; letztere OAuthBearerAuthenticationMiddleware.

Das nachfolgende Listing zeigt eine Katana-Konfiguration ... [Mehr]

Benutzerdefinierte Two-Factor-Authentication mit ASP.NET Identity 2.0

ASP.NET Identity 2.0 unterstützt nun die Implementierung von Two-Factor-Authentication-Szenarien. Gemeint ist damit, dass der Benutzer nach der Authentifizierung mit primären Credentials, wie Benutzername und Passwort, durch eine weitere Angabe von Informationen beweisen muss, dass er jener Benutzer ist, der er vorgibt zu sein. Dazu könnte er aufgefordert werden, einen Code, den er per EMail oder SMS erhalten hat, zu erfassen. Informationen dazu findet man unter [1].

Um eine eigene Variante für die Two-Factor-Authentication bereitzustellen, implementiert der Entwickler das Interface IUserTokenProvider ... [Mehr]

Mehrere Views pro Template in AngularJS mit UI-Router

Nachdem ich gezeigt habe, wie man in AngularJS mit dem externen Modul UI-Router verschachtelte Views realisieren kann, gehe ich in diesem Beitrag darauf ein, wie man damit Templates, die sich aus mehreren Views zusammensetzen, implementieren kann. In diesem Fall erhält jede View einen Namen. Das nachfolgende Listing ... [Mehr]

Verschachtelte Views mit AngularJS und UI-Router

Das externe Modul UI-Router (https://github.com/angular-ui/ui-router) gibt dem Entwickler die Möglichkeit, Views zu schachteln, mehrere Views als logische Seiten in eine physische Seite einzubinden sowie ein und denselben Controller für mehrere logische Seiten zu verwenden. Es ist Teil des Projektes AngularUI, welches Module zur Gestaltung ansprechender Benutzeroberflächen mit AngularJS bereitstellt. Um UI-Router zu nutzen, bindet der Entwickler die JavaScript-Datei angular-ui-router.min.js ein und importiert das Modul ui.router. Um UI-Router zu konfigurieren, lässt der Entwickler die Services $stateProvider und $urlRouterProvider in die Funktion config injizieren. Das nachfolgende Listing ...
[Mehr]