Ich habe eine Entität mit Hunderten von Eigenschaften. Während es in der Datenbank gut ist, ist es in den Klassen unbequem. Die Frage ist, wie kann ich einige Eigenschaften der Klasse in andere Klassen gruppieren, so dass es bei der Programmierung bequemer wäre, während nur eine Tabelle beibehalten wird.
Pseudocode Beispiel:
class Work {
WorkVolumes WorkVolumes;
...
SomeOtherGroupOfProperties SomeOtherGroup;
}
class WorkVolumes {
float VolumeOfWorkType1;
float VolumeOfWorkType2;
...
float VolumeEtc;
}
class SomeOtherGroupOfProperties {
int SomeOtherProperty;
...
}
In der Datenbank gibt es nur die Tabelle Arbeiten mit den Spalten VolumeOfWorkType1, VolumeOfWorkType2, VolumeEtc, SomeOtherProperty, ...
Weitere Informationen finden Sie unter "Automatische Tabellenaufteilung für Entitätstypen". https://blogs.msdn.microsoft.com/dotnet/2017/06/28/announcing-ef-core-2-0-preview-2/
Für das folgende Modell wird nur eine Tabelle erstellt:
modelBuilder.Entity<Order>().OwnsOne( p => p.OrderDetails, cb => { cb.OwnsOne(c => c.BillingAddress); cb.OwnsOne(c => c.ShippingAddress); }); public class Order { public int Id { get; set; } public OrderDetails OrderDetails { get; set; } } public class OrderDetails { public StreetAddress BillingAddress { get; set; } public StreetAddress ShippingAddress { get; set; } } public class StreetAddress { public string Street { get; set; } public string City { get; set; } }