[英]Include() not working when Select new object in Entity framework
我的代碼:
DbContext.Musics()
.Include(m => m.Author)
.Select(m => new MyComplexType()
{
MyMusic = m,
blablabla = ...
})
結果MyComplexType.MyMusic.Author為null,我不知道如何解決...
這是EF6及更高版本中的一個已知問題,您可以在https://github.com/aspnet/EntityFramework/issues/599中看到EF中的錯誤報告。
行為已更新,允許從EF7-beta4開始將Include(...)
納入投影,但是對於EF 6或更低版本,此錯誤仍然存在。
我認為不可能按照您的描述進行。 當您選擇另一種類型(而不是您要包括的類型)時,包括將不再加載相關的實體,就像您自己注意到的那樣。 實現您想要的簡單方法是:
DbContext.Musics()
.Select(m => new MyComplexType()
{
MyMusic = m,
Author = m.Author,
blablabla = ...
})
更新以回應評論中的抱怨。 使用作者的代碼(並在EF上下文中將EnableLazyLoading設置為off),您將看到MyComplexType.MyMusic.Author始終為null,即使Author確實在數據庫中也是如此。 因此,在這種特殊情況下,Include不起作用(不執行您期望的操作)。
在我的答案中包含的代碼中,MyComplexType.Author將被正確加載(無需使用任何包含)。 因此,它與作者的代碼完全不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.