簡體   English   中英

在實體框架中選擇新對象時,Include()不起作用

[英]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),您將看到My​​ComplexType.MyMusic.Author始終為null,即使Author確實在數據庫中也是如此。 因此,在這種特殊情況下,Include不起作用(不執行您期望的操作)。

在我的答案中包含的代碼中,MyComplexType.Author將被正確加載(無需使用任何包含)。 因此,它與作者的代碼完全不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM