Tipps für Entity Framework 5+ in Kombination mit Web API

Verwendet man Entity Framework 5+ (DbContext) gemeinsam mit der Web API, so ergeben sich ein paar Fallstricke, deren Bewältigung an dieser Stelle aufgezeigt wird:

  • Standardmäßig leitet Entity Framework zur Laufzeit von den Entitäten ab und bringt in den so erzeugten Subklassen zusätzliche Logiken ein, um Lazy Loading zu ermöglichen. Allerdings funktioniert Lazy Loading in verteilten Umgebungen per se nicht wirklich und der Serializer hat Probleme mit diesen Klassen, die er nicht kennt. Deswegen ist es eine gute Idee, die Erzeugung dieser Proxy-Entitäten zu unterbinden. Dies kann beim verwendeten Context angeführt werden:

            this.Configuration.ProxyCreationEnabled = false;
  • Entitäten gehen in der Regel mit benachbarten Entitäten zyklische Abhängigkeiten ein. Standardmäßig haben die verwendeten XML- und JSON-Serializer damit ein Problem. Damit der XML-Serializer damit umgehen kann, annotiert der Entwickler zum Beispiel die einzelnen Entitäten mit [DataContract(IsReference=true)] und die einzelnen Eigenschaften mit [DataMember]. Um den JSON.Net-Serializer zu besämpftigen, kann man stattdessen die folgende Einstellung in der Datei App_Start\WebApiConfig vornehmen:

            config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

    Um hingegen die zyklischen Referenzen zu erhalten, kann der Entwickler auf die Einstellung

            config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.None;

    zurückgreifen. Hierbei führt JSON.Net für sämtliche Objekte eine Id ein und kann somit auf bereits serialisierte Objekte verweisen. Dabei ist jedoch anzumerken, dass es sich hierbei nich um einen allgemein akzeptierten Mechanismus handelt, weswegen man den daraus resultierenden Nachrichten-Aufbau mit dem Kommunikationspartner abstimmen bzw. diesen davon in Kenntnis setzen muss.

 

 
Sie wollen mehr zum Thema Tipps für Entity Framework 5+ in Kombination mit Web API wissen? Hier können Sie eine Anfrage für eine unverbindliche Schulung ode Beratung bzw. einen Workshop erstellen.
 
Unverbindliche Anfrage
 
 

Schulung und Beratung

Angular 2

Datenbindung, Formulare, Validierung, Routing, HTTP, Komponenten, ...

Details

Migration auf Angular 2

Bestehende Projekte auf Angular 2 migrieren, ngUpgrade, ...

Details

Angular 2: Deep Dive

Erweiterte Aspekte von Angular 2

Details

Progressive Web-Apps mit Angular 2

InHouse-Schulung und/oder Beratung maßgeschneidert für Ihre Lernziele

Details

Angular 2 Review

Feedback und klärung offener Fragen, weiterführende Themen

Details

Angular 2 Workshop

Start ohne Umwege

Details

Weitere Schulungen ...