2016-02-25 8 views
5

Ich habe eine Klasse, die einige Eigenschaften enthält. Aus einigen architektonischen Gründen habe ich eine Instanz eines anderen Objekts in meiner Klasse.EF Core fließende Zuordnung zu inneren Objekteigenschaften

Einfaches Beispiel

public class MyEntity { 
    public MySubEntity SubEntity {get; set;} 
} 

Dazu erstelle ich fließend Mapping wie:

builder.ToTable(MyEntity.CONST_TABLE_NAME); 
builder.HasKey(m => m.Id); 
builder.Property(m => m.Column1).IsRequired(); 
builder.Property(m => m.SubEntity.Column2).IsRequired(); 

ich nicht alle meine Sub-Entität integrieren kann Eigenschaften in meine Haupt-Einheit (meine Sub-Entität seine eigene Intelligenz hat). Ich möchte nur meine Untertitätseigenschaften, die NICHT in einer separaten Tabelle gespeichert ist, auf myEntity-Tabelle zuordnen.

Die letzte Zeile eine Ausnahme:

The expression 'm => m.SubEntity.Column2' is not a valid property expression. The expression should represent a property access: 't => t.MyProperty'. 

Wie kann ich eine solche Abbildung durchführen?

Antwort

3

EF Core unterstützt diese Art der Zuordnung derzeit nicht. Es wird nicht in EF-Core 1.0 RTM (siehe meine Github Ausgabe: https://github.com/aspnet/Home/issues/1330) unterstützt werden

Wie ich in meinem GitHub Problem beschrieben, habe ich herausgefunden 2 Lösungen:

1) Erstellen Sie eine abgeleitete Klasse von meinem Modell, speziell für EF entwickelt, und alle Eigenschaften als einfach. Es wird mehr Mapping beim Einfügen/Aktualisieren und Abrufen von Db benötigt. Wir wählen diese Option nicht

2) Erstellen Sie Proxy-Eigenschaften. In meinem Beispiel ist das wie folgt:

Dies scheint die beste Lösung zu sein (wir wählen diese).

Verwandte Themen