13

Ich bin neu in Domain-Design, aber ich möchte es lernen und es für eine neue Anwendung verwenden. Ich werde Entity Framework für den Datenzugriff verwenden.Domain Driven Design, .NET und das Entity Framework

Das Grundlayout so weit ist:

ASP.NET MVC und andere Clients (mobile Geräte etc.)
|
Webservices
|
Domänenmodell (Services, Repositories, Aggregate, Entitäten und Wertobjekte)
|
Datenzugriffsebene (Entity Framework)
|
Data Storage (SQL Server)

Was ist der beste Weg, um Daten zwischen der Datenzugriffsschicht und dem Domänenmodell zu übertragen? Ich denke, dass die Entitäten im Domänenmodell POCO-Objekte sind und dass sie den Entity Framework-Objekten zugeordnet werden sollen. Ist das eine gute Lösung?

Wenn ja:
Wie und wo sollte eine solche Zuordnung erfolgen? (Domain Model Layer oder Data Access Layer)
Wo und wie soll ich Entity Framework abfragen (dh eine Liste basierend auf einer Suche zurückgeben)?

+7

Denken Sie daran, dass DDD letztlich nur eine Möglichkeit, effektiv zu kommunizieren mit dem Kunden in seiner eigenen Sprache (Domain) ist, und dann Entwerfen Sie Ihre Anwendung auf eine Weise, die mit dieser Sprache übereinstimmt. Es ist keine Entwicklungstechnik an sich. Daher gibt es keine festen Regeln, wo wo hingelegt werden soll. –

+6

@Robert Harvey: Sehr wahr, aber immer noch sehr nützlich, um eine Anleitung zu bekommen, wie man die DDD-Richtlinien auf eine bestimmte (wahrscheinlich ziemlich häufige) Situation anwendet. – jeroenh

Antwort

3
Ich denke, dass die Entitäten im Domänenmodell POCO-Objekte sind und dass sie den Entity Framework-Objekten zugeordnet werden sollen. Ist das eine gute Lösung?

Ich denke, es ist.

Dies ist etwas, das wir ziemlich erfolgreich gemacht haben, obwohl in meinem Fall in der Java-Welt. Unsere Domain-Klassen enthalten den Großteil der Geschäftslogik. Jeder hat einen Verweis auf ein dünnes Datenentitätsobjekt und delegiert das Abrufen und Festlegen der persistenten Eigenschaften an die Datenentität.

2

Die S#arp architecture project ist ein ausgezeichneter Ausgangspunkt für Hinweise zur Anwendung von DDD. Es basiert auf NHibernate, aber die verwendeten Prinzipien sollten gleichermaßen für EF halten ...