Beim Erstellen von POCO-Klassen, die Sammlungen primitiver Typen enthalten und von EF Code First beibehalten werden, ist der beste Rat, den ich bisher gefunden habe, eine neue Klasse mit einer ID plus dem primitiven Typ zu erstellen:
Entity Framework und Modelle mit einfachen Arrays
Wenn ich jetzt mehrere Klassen habe, die Eigenschaften vom Typ ObservableCollection<string>
benötigen und sie durch ObservableCollection<EntityString>
ersetzen (wobei EntityString
ein benutzerdefinierter Typ mit einer Id und einer string -Eigenschaft ist), dann habe ich eine Tabelle EntityString
mit mehreren Fremdschlüsselspalten, eine für jede Eigenschaft vom Typ ObservableCollection<EntityString>
für alle konkreten Typen mit solchen Eigenschaften.
Dies führt zu einem Aufblähen von Spalten mit weitgehend null Fremdschlüssel in der Tabelle EntityString
.
Ein Ansatz wäre, eine Unterklasse von EntityString
zu erstellen und die Tabelle nach Typ - Modell für diese Unterklassen. Dies erfordert jedoch schwierige Änderungen am Objektmodell, um Entity Framework einfach anzupassen.
Fragen:
Collection<PrimitiveType>
? Die Förderung eines einfachen Typs für eine Entität ist eine Option. Wenn Sie diese neue primitive Entität in mehreren Relationen verwenden möchten, ist es besser, die Navigationseigenschaften vollständig von dieser Entität zu entfernen und eine unabhängige Assoziation (keine FK-Eigenschaften) zu verwenden.
%Vor%und Zuordnung:
%Vor% In der Datenbank erhalten Sie eine neue NULL-fähige FK pro zugehörigem Principal - es gibt keine Möglichkeit, sie zu vermeiden, außer dass eine spezielle StringEntity
-Klasse pro Principal erstellt wird (verwenden Sie keine Vererbung, da dies die Performance beeinflusst).
Es gibt eine Alternative:
%Vor% In diesem Fall benötigen Sie keinen verbundenen Entitätstyp (und eine zusätzliche Tabelle), aber Ihre Entität ist mit der zusätzlichen Eigenschaft Text
, die nur für die Persistenz vorgesehen ist, belastet.
Tags und Links entity-framework entity-framework-4.1 ef-code-first