Ich habe ein ziemlich einfaches Domain-Modell mit Pocos erstellt. Ich habe diese mit EntityTypeConfiguration<TEnitityType>
-Klassen einem EF DB-Kontext zugeordnet. Das alles funktioniert gut.
Ich versuche jetzt, einen OData V4 WebAPI-Controllerendpunkt mit ODataConventionModelBuilder
zu erstellen, und hier werden die Dinge gelöst. Alles funktioniert gut, bis es auf eine Assoziation stößt, die nicht auf Konventionen basiert. Aber ich finde keine Möglichkeit, die ODataBuilder
dazu zu bringen, die Zuordnungen von meinen EntityTypeConfiguration<TEnitityType>
-Klassen aufzunehmen.
Dies hinterlässt meine 2 ungenießbaren Optionen
ODataBuilder
neu zu.
Nicht sicher, ob Codebeispiele helfen, aber hier sind sie sowieso, ich habe die Entitäten der Kürze wegen vereinfacht.
%Vor%Das Problem kommt, wenn es auf die ItemTags-Sammlung stößt, hier ist ein ItemTag:
%Vor%Was Sie sehen können, ist nicht konventionsbasiert und ich habe eine Konfigurationsklasse wie folgt:
%Vor% Kennt jemand eine Möglichkeit, dass ich diese EntityTypeConfiguration
-Dateien mit einem ODataBuilder oder Web-API verwenden kann?
BEARBEITEN
Wenn diese Seite gefunden wird, scheint dies darauf hinzuweisen, dass es mit EF 6 möglich ist, das ich verwende. Was ich tun möchte, ist dies
%Vor%, aber der Builder hat keine Configuration-Eigenschaft.
Zwei Dinge:
Ich habe jetzt mehrere Quellen gelesen, die sich gegen die Verwendung von Lazy Loading und Serialisierung richten; Das ist im Grunde was OData ist; (Es verwendet sogar die Attribute system.runtime.serialization.datacontact und datamember)
Ich hatte mehr Erfolg beim expliziten Laden von Kontext und beim Definieren von Navigationseigenschaften im modelbuilder für dbContext. Ich verstehe, dass Sie sich angepasste Nav-Eigenschaften ansehen, aber ich bin ziemlich sicher, dass diese Methoden für die ODataModelBuilder-Klasse überschrieben sind (die nicht viel annehmen und weniger Entity Framework benötigen). Wo Sie EF bereits erwähnt haben, stelle ich mir vor, dass dies die Richtung ist, in der Sie arbeiten werden. Wenn Sie Ihre Modellnamen nicht aliasieren müssen, fügen Sie einen Eintrag für jedes Set hinzu, indem Sie die Konvention verwenden.
EntitySet ("routePrefixName")
beim Erstellen des EdmModel, und es verbindet die Beziehungen, die Sie zuvor mit Fluent gemacht haben. Wenn Sie dem zugrunde liegenden Modell überflüssige Elemente hinzufügen müssen, sollten Sie jede Klasse als EntityType & lt; & gt; () definieren und nur den Schlüssel festlegen. EdmBuilder kann milde Eigenschaften und Schlüsselzuordnungen verwenden, um das EF-Modell im ODataConventionModelBuilder anzuhängen.
Ich habe seit einiger Zeit gewrestlet und gesucht, und es scheint keine Fülle von Informationen über .Net OData v4 zu geben, wahrscheinlich aufgrund des gesamten force datetimeoffset Problems.
Hoffe das hilft etwas
Tags und Links asp.net-web-api entity-framework odata