[英]Including child Objects in Entityframework
我想在IQueryable列表中包括子對象。
我想在某些表類型IQueryable列表的選定列上包括一個子對象。
我試過這樣的:
IQueryable<Persons> persons = Context.Persons.Select(x=> new persons{Pkid=x.pkid, FirstName=x.FirstName}).AsQueryable();
persons= persons.Include("Address");
這包括子對象不起作用..任何人都請幫助...我做錯了..非常感謝...
Include
不適用於投影。 此外,它是不需要的。 這樣做:
var query = context.Persons
.Select(x => new PersonDto
{
Id = x.pkid,
FirstName = x.FirstName,
Address = x.Address
});
這里的幾點:
Include
Address
,EF會處理 PersonDto
作為投影目標。 PersonDto
只有Id
, FirstName
和Address
。 您不能在投影上使用Include()
,請嘗試以下操作:
Iquerable<Persons> persons = Context.Persons
.Include("Address")
.Select(x=> new persons{Pkid=x.pkid, FirstName=x.FirstName})
.AsQuerable();
另外,您還存在命名沖突,您投影到類型persons
並希望將結果保存在IQueryable
命名persons
-其中之一是錯誤的。 您有理由完全需要投影嗎? 你可以做到
Iquerable<Persons> persons = Context.Persons.Include("Address");
首先:檢查是否啟用了延遲加載 。 啟用它時,我遇到了不同的結果。 我更喜歡禁用惰性加載。
第二:檢查以下語法:
result = (From person In context.Persons.Include("Address")).ToList();
PS :有用的EF技巧和竅門: http : //blogs.msdn.com/b/alexj/archive/2009/03/26/index-of-tips.aspx
更新:
Include不起作用,因為您是在新創建的對象上使用它,而不是在上下文中可用的對象上。 您應該在創建新對象之前使用Include。
檢查一下:
result = (From person In context.Persons.Include("Address") Select New With {.FirstName = item.FirstName, .AddressValue = item.Address.Value}).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.