Ich verstehe, dass Daten Entity-Modelle sollten von echten Domain-Modelle
Nicht wahr
vermeiden Kopplung zwischen Infrastruktur Anliegen und Domain selbst
Wahre
getrennt werden
Sie CAN Verwenden Sie EF, um Ihre Domänenmodelle direkt beizubehalten, jedoch sollten Sie Ihre Domänenmodelle nicht an EF koppeln.
Wie sieht das aus?
Angenommen, Sie haben ein Projekt Domain
genannt, die Ihre Modelle in ihm hat, und eine andere namens DataStore
die Ihre Repositories hat auf die Modelle bestehen (mit EF)
Jetzt in der Regel mit EF würden Sie Attribute und alle Arten verwenden von Unsinn auf die Modelle, die Sie beibehalten möchten, aber diese verschmutzt & Paare diese Modelle zu EF als Speichermechanismus & fügt Abhängigkeiten zu EF von Ihrem reinen Projekt Domain
- das ist, was wir versuchen zu vermeiden.
EF6 zu retten, werfen Sie einen Blick auf die EF6 FluentApi, können Sie Ihre Domain-Modelle mit EF arbeiten, ohne Hinzufügen von EF spezifische Attribute oder Abhängigkeiten zu dem Domain
Projekt.
Primärschlüssel?
modelBuilder.Entity<OfficeAssignment>().HasKey(t => t.InstructorID);
Index?
modelBuilder
.Entity<Department>()
.Property(t => t.Name)
.HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute()));
: Nun wird schnell ein Schmerz werden, wenn Sie dies tun, für jedes einzelne Objekt, aber wenn man auf einige Konventionen halten (oder einen Basistyp verwenden diese noch einfacher zu machen)
Dann können Sie Verwenden Sie Reflection, um dies für alle Entitäten in Ihrer Domäne auto-magically
zu tun.
Viel Glück
Parameter übergeben mit Konstruktor. Aber EF ist bereits Repository-Muster und Arbeitseinheit, warum brauchen Sie noch eine weitere Abstraktion auf dieser Grundlage? Wenn Sie zuerst Code verwenden, benötigen Sie auch kein Datenmodell. Datenbank nur dem Domänenmodell zuordnen. –
@ L-Four Was ist, wenn zwei verschiedene Domänenmodelle dieselbe Infrastrukturtabelle verwenden oder komplexe Eigenschaften innerhalb komplexer Eigenschaften erforderlich sind? – Robert
Verwenden Sie dann Techniken wie "Entity Splitting". Nicht sicher, was Sie mit komplexer Eigenschaft innerhalb komplexer Eigenschaft meinen. –