Kontext: Ich habe eine Lösung mit 3 ProjektenEntity Framework 6 Projektion, POCO Einheit Rückgabetyp
Project.Db: mein DbContext/Repositorys
Project.Core Enthält: Enthält meine POCO Klassen (von der DbContext verwendet) .
Project.Web: Mein MVC-Projekt, das die Mapping-Klassen viewModels und POCO-ViewModel enthält.
Es scheint unmöglich zu sein, dass eine typisierte Projektion einen EF-Entitätstyp zurückgibt. In Project.Db habe ich die folgende Methode. Ich möchte zwei spezifische Felder (Name und ID) der Regionen und ihrer Unterregionen erhalten. Ich möchte nicht, dass das generierte T-SQL die unerwünschten Felder auswählt.
public List<Region> GetRegionsAndSubRegions(){
var regions = Context.Regions.Where(r => condition);
var lightRegions = regions.Select(z => new Region{
RegionName = z.RegionName,
RegionId = z.RegionId
}).ToList();
}
Das bin ich den Fehler
The entity or complex type 'Region' cannot be constructed in a LINQ to Entities query.
Der Weg werde ich um diese zu bekommen ist gefunden:
var lightRegions = regions.ToList().Select(z => new Region{
RegionName = z.RegionName,
RegionId = z.RegionId
}).ToList();
Doch die "ToList()" alle Felder auswählen was ich nicht will.
Ich könnte auf eine ViewModel-Klasse projizieren, aber ich möchte diese Abhängigkeit nicht in Project.Db. Die Methode sollte eine Liste meiner POCO-Entität zurückgeben (Liste <Region
>).
Alle meine Repository-Methoden geben Core (POCO) typisierte Objekte an das Webprojekt zurück.
Gibt es eine Möglichkeit, dies zu tun, ohne auf einen anonymen Typ zu projizieren und ihn wieder dem Region-Typ zuzuordnen (was überflüssig wäre)? Danke
Ich weiß nicht, wo Sie hinwollen, so Ich kann dich nicht in die richtige Richtung weisen. Es ist mir nicht klar, warum Sie diese teilweise erfüllten Entitäten brauchen. –
Bearbeitet mit mehr Details – BenoitM
Versuchen Sie diese Technik: http://stackoverflow.com/questions/12916080/the-entity-or-complex-type-cannot-be-constructed-in-a-linq-to-entities-abfrage –