2016-04-09 11 views
2

Wir haben ein Projekt, das LinqToSql als ORM verwendet und wir möchten, dass unsere Einheiten mit OData Version 4 belichten (also soweit ich das gelernt haben wir nicht WCF Data Services verwenden können, und wir sollten Web Api stattdessen verwenden).Verwendung von LinqToSql mit OData WebApi?

Bisher konnte ich kein Beispiel oder Dokumentation im Internet finden, die zeigt, wie LinqToSql zusammen mit OData WebApi zu verwenden.

Das Problem sind ODataConventionModelBuilder Arbeiten mit EntityFramework (Eigentlich Standard-IT-Konventionen festgelegt mit DataComponentModel Anmerkungen arbeitet, die in unseren LinqToSql Entitäten nicht verwendet werden)

ich für ein suchen, die mit System.Data.Linq.Mapping arbeiten, um das Modell zu machen.

Die andere Lösung ist es, die richtigen Konventionen für ODataConventionModelBuilder zu finden, die mit LinqToSql Mapping Annotatoins arbeitet.

Ich weiß nicht, ob dieser Modellbauer existiert oder sollen wir es selbst implementieren?

Antwort

2

Es gibt keinen Standardmodellbuilder für Linq to SQL. Es gibt verschiedene Möglichkeiten, wie Sie Ihr Problem lösen können.

  • stammen aus eine Customizer-Klasse, die die Anmerkungen definiert in System.Data.Linq.Mapping erkennt.

  • Build the model manually mit den Methoden der Lager .

  • Erstellen Sie eine Reihe von Datenübertragungsklassen, die die genauen Typen und Eigenschaften darstellen, die Sie über Ihren Dienst bereitstellen möchten, und schreiben Sie dann ein Dienstprogramm zum Umwandeln von Datenübertragungsobjekten in Datenspeicherobjekte und umgekehrt. In der Datenübertragungsschicht können die Klassen den Konventionen entsprechen, die von ODataConventionModelBuilder erkannt werden (z. B. haben die Schlüsseleigenschaften den Namen Id oder FooId für eine Klasse mit dem Namen Foo). Das Transformationsprogramm kann einfach mit Hilfe einer Bibliothek wie geschrieben werden. Siehe ASP.NET WebApi OData support for DTOs, DTO and Projections in WebAPI und Web API Deep Dive - DTO Transformations and Automapper.

+0

Was meinen Sie mit "Lager ODataModelBuilder"? – Beatles1692

+1

Ich meine nur die vorhandene 'ODataModelBuilder' Klasse, die erfordert, dass Sie Ihr Modell explizit erstellen. ZB 'builder.EntityType () .HasKey (f => f.FooID)' usw. Anstatt sich auf eine Reihe von Konventionen zu verlassen, die die Typen, Eigenschaften und Beziehungen in Ihrem Datenmodell erkennen können, müssen Sie dies manuell festlegen all diese Informationen. – lencharest

Verwandte Themen