2012-04-02 2 views
1

Wir haben eine spezifische Struktur namens Measure, und wir möchten diesen Typ anstelle des Datenbankfeldtyps z. doppelt.Verwenden Sie die Projektion, um nicht zugeordnete Typen in EF zu füllen

So haben wir eine Einheit:

public class MyEnity 
{ 
    public int MyValue { get; set; } 
} 

Und wir haben ein Transferobjekt: public class MyDto { öffentliche Maßnahme MyMeasureValue {get; einstellen; } }

Wenn der Objekttyp, würde passen wir unsere DTO pro Projektion können füllen:

enities.Select(i => new MyDto { MyMeasureValue = new Measure(i.MyValue, _unitsService.GetUnit("km")) }); 

Aber da EF wir diese haben zum Nachfüllen nicht, solche Aussagen unterstützen, oder die gesamte Einheit laden :

entities.Select(i => new { MyValue = i.MyValue }) 
     .AsEnumerable() 
     .Select(i => new MyDto { MyMeasureValue = new Measure(i.MyValue, _unitsService.GetUnit("km")) }); 

wir diese Schleife mehrmals in dem Nachfüllvorgang vermeiden wollen, vor allem, weil es eine Menge von Eigenschaften zu füllen ist. Gibt es eine Möglichkeit, mit der ersten Aussage zu beginnen und EF beizubringen, die Measure-Erstellung auszuführen? (z.B. Abhören usw.)

PS. Es ist keine Option, einen komplexen EF-Typ zu erstellen und zu mappen!

Dank Enyra

Antwort

0

können Sie komplexe Typen verwenden, während einige Eigenschaften des Unternehmens holen Linq-Entity verwendet wird. Zum Beispiel;

Übrigens, anstatt DTOS von Hand zu mappen, ist es besser, autommaper zu verwenden. Es hat die Funktionalität, passende Eigennamen ohne explizite Deklaration zuzuordnen.

+0

Complexe-Typen sind keine Option, weil unser Typ eine Struktur ist und sein muss. Automapper könnte eine Lösung sein, das muss ich klären. – Enyra

Verwandte Themen