Ich habe ein ziemlich einfaches Domain-Modell mit Pocos erstellt. Ich habe diese zu einem EF DB-Kontext mit EntityTypeConfiguration<TEnitityType>
Klassen zugeordnet. Das alles funktioniert gut.Wie erhalten Sie eine Web-API odatamodelbuilder mit EF fließenden API-Mappings arbeiten
Ich versuche jetzt, einen OData V4 WebAPI-Controller-Endpunkt mit einem ODataConventionModelBuilder
zu erstellen, und das ist, wo die Dinge nicht gelöst werden. Alles funktioniert gut, bis es auf eine Assoziation stößt, die nicht auf Konventionen basiert. Aber ich kann keinen Weg finden, um die ODataBuilder
die Mappings von meinen EntityTypeConfiguration<TEnitityType>
Klassen zu holen.
Dies läßt meine mit 2 ungenießbar Optionen
- mein schönes, sauberes pocos mit schmutzigen Attributen Verzieren.
- Re-Karte alle nicht Konvention basiert Zuordnungen manuell die
ODataBuilder
Nicht sicher, ob Code unter Verwendung von Proben helfen, aber hier sind sie sowieso, ich habe die Einheiten der Kürze halber vereinfacht.
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Item>("Items");
config.MapODataServiceRoute(
routeName: "odata",
routePrefix: "odata",
model: builder.GetEdmModel(),
batchHandler: new DefaultODataBatchHandler((GlobalConfiguration.DefaultServer)));
public class Item
{
public Int32 Id { get; set; }
public Int16 ItemTypeId { get; set; }
public virtual ItemType Type { get; set; }
public virtual ICollection<ItemVersion> Versions { get; set; }
public virtual ICollection<ItemTag> Tags { get; set; }
}
Das Problem kommt, wenn es die ItemTags Sammlung begegnet, hier ist ein ItemTag:
public class ItemTag
{
public Int32 ItemId { get; set; }
public string Tag { get; set; }
public Item Item { get; set; }
}
, die Sie nicht Konvention sehen basiert ist und ich habe eine Konfigurationsklasse für sich wie folgt:
Kennt jemand eine Möglichkeit, dass ich diese EntityTypeConfiguration
Dateien mit einem ODataBuilder oder Web-API verwenden kann?
EDIT
Wenn this page gefunden, die es scheint darauf hinzudeuten könnte möglich sein, mit EF 6, die ich verwende. Was ich tun möchte, ist dies
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Dbf>("Dbfs");
// modelBuilder.Configurations.Add(new DbfMap()); <---- NO GOOD - Needs Class from DBContext we only have a model builder :(
Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute("ODataRoute", "odata", model);
, aber der Builder hat keine Konfigurationen Eigenschaft.
fanstatic hilft !, tat ein bisschen mehr googeln und das Top-Ranking Suchergebnis für „OData web api fließend Datenzuordnung“ ist nun diese Frage SO. –
Haben Sie das jemals herausgefunden? Ich weine meine Augen über genau dasselbe. –