SoftwareArchitekt.at | Schulungen, Trainings & Beratung in Deutschland und Österreich | Berater, Trainer, Autor, Dozent

 

Entity Framework Performance Tip #2: Pre-Loading

Entity Framework stellt auch Verknüpfungen zwischen Objekte, die die Anwendung hintereinander in den Context lädt, über deren Navigationseigenschaften her. Ich bezeichne dies als Pre-Loading. Pre-Loading kann eine effiziente Alternative zum Eager Loading darstellen, zumal Entity Framework beim Einsatz von Eager Laoding sämtliche Daten über eine einzige Abfrage lädt. [Mehr]

Entity Framework Performance Tip #1: Ladestrategien

Entity Framework unterstützt zwei Ladestrategien für benachbarte Objekte: Lazy Loading lädt benachbarte Objekte bei Bedarf nach, Eager Loading lädt benachbarte Objekte mittels Outer-Joins sofort. Daneben kann der Entwickler eine weitere Lade-Strategie verwenden, die hier als Pre-Loading bezeichnet und in einem weiteren Beitrag näher betrachtet wird. Lazy Loading bietet sich für Fälle an, in denen ... [Mehr]

Middleware in ASP.NET vNext, Teil 1: Überblick

Wie von Microsofts OWIN-Implementierung Katana bekannt, besteht die Aufgabe der Klasse Startup bei ASP.NET vNext darin, Middleware-Komponenten zu registrieren. Diese Komponenten werden von jeder HTTP-Anfrage in der definierten Reihenfolge durchlaufen, wobei jede Komponente auch die weitere Verarbeitung einer Anfrage durch nachfolgende Komponenten unterbinden kann. HTTP-Antworten durchlaufen diese in umgekehrter Reihenfolge. Middlware-Komponenten implementieren verschiedene Aspekte der Kommunikation mit Clients. Dazu zählt zum Beispiel die Implementierung von Security-Szenarien, die Komprimierung von Seiteninhalten, das Unterstützen von CORS und Web-Sockets, das Ausliefern von statischen Dateien oder das Delegieren an Anwendungs-Frameworks, wie ASP.NET MVC oder SignalR. Obwohl ASP.NET vNext nicht primär auf OWIN basiert ... [Mehr]

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]