Bağlam: Ben 3 projelerdeVarlık Framework 6 Projeksiyon POCO varlık dönüş tipi
ile bir çözüm var Project.Db: (DBContext tarafından kullanılır) benim POCO sınıfları içerir: my DBContext/Repositories
Project.Core İçeriyor .
Project.Web: viewModels ve POCO-ViewModel eşleme sınıflarını içeren mvc projem. Yazılı bir projeksiyonun bir EF varlık türüne sahip olması imkansız gibi görünüyor. Project.Db'de aşağıdaki yönteme sahibim. Bölgelerin ve alt bölgelerinin iki özel alanını (Name ve ID) almak istiyorum. Oluşturulan T-SQL'in istenmeyen alanları seçmesini istemiyorum. Bu bana hata
The entity or complex type 'Region' cannot be constructed in a LINQ to Entities query.
Etrafa almak bulundu yolu alacak
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();
}
şudur:
Ancakvar lightRegions = regions.ToList().Select(z => new Region{
RegionName = z.RegionName,
RegionId = z.RegionId
}).ToList();
, "ToList()" tüm alanları seçecektir Ben istemiyorum.
Bir ViewModel sınıfına proje yapabilirim, ancak Project.Db'de bu bağımlılığı istemiyorum. Yöntem benim POCO varlığımın bir listesini döndürmelidir (Liste <Region
>).
Tüm depo yöntemlerim, Web projesine Çekirdek (POCO) yazılan nesneleri döndürür.
Anonim bir türe yansıtmadan ve bunu Bölge türüne (gereksiz olan) eşlemeksizin yapmanın bir yolu var mı? Teşekkürler
, o yüzden bilmiyorum Seni doğru yönde gösteremem. Bu kısmen doldurulmuş varlıklara neden ihtiyacın olduğu açık değil. –
Daha fazla detay ile düzenleme – BenoitM
Bu tekniği deneyin: http://stackoverflow.com/questions/12916080/the-entity-or-complex-type-cannot-be-constructed-in-a-linq-to-entities-query –