Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中选择新对象时Include()不起作用_C#_.net_Entity Framework - Fatal编程技术网

C# 在实体框架中选择新对象时Include()不起作用

C# 在实体框架中选择新对象时Include()不起作用,c#,.net,entity-framework,C#,.net,Entity Framework,我的代码: DbContext.Musics() .Include(m => m.Author) .Select(m => new MyComplexType() { MyMusic = m, blablabla = ... }) MyComplexType.MyMusic.Author的结果为空,我不知道如何解决它…我认为不可能按照您的描述执行。

我的代码:

DbContext.Musics()
         .Include(m => m.Author)
         .Select(m => new MyComplexType()
         {
                MyMusic = m,
                blablabla = ...
         })

MyComplexType.MyMusic.Author的结果为空,我不知道如何解决它…

我认为不可能按照您的描述执行。当您选择另一种类型(不是您所包含的类型)时,“包含”将不再加载相关实体,正如您自己所注意到的。实现您想要的目标的简单方法是:

DbContext.Musics()         
     .Select(m => new MyComplexType()
     {
            MyMusic = m,
            Author = m.Author,
            blablabla = ...
     })
根据评论更新asnwer投诉。使用author代码(以及在EF上下文中启用LazyLoading关闭的设置),您将看到MyComplexType.MyMusic.author始终为空,即使author确实在数据库中。因此,在这种特殊情况下,Include不起作用(不符合您的期望)


在我的答案中包含的代码中,MyComplexType.Author将被正确加载(无需使用任何包含)。因此,它与作者的代码完全不同。

我认为不可能像您所描述的那样。当您选择另一种类型(不是您所包含的类型)时,“包含”将不再加载相关实体,正如您自己所注意到的。实现您想要的目标的简单方法是:

DbContext.Musics()         
     .Select(m => new MyComplexType()
     {
            MyMusic = m,
            Author = m.Author,
            blablabla = ...
     })
根据评论更新asnwer投诉。使用author代码(以及在EF上下文中启用LazyLoading关闭的设置),您将看到MyComplexType.MyMusic.author始终为空,即使author确实在数据库中。因此,在这种特殊情况下,Include不起作用(不符合您的期望)


在我的答案中包含的代码中,MyComplexType.Author将被正确加载(无需使用任何包含)。因此,它与作者的代码完全不同。

这是EF6和之前版本中的一个已知问题,您可以在


该行为已更新,以允许从EF7-beta4开始将(…)包含到投影中,但是对于EF6或之前版本,此错误仍然存在。

这是EF6和之前版本中的已知问题,您可以在以下位置在EF中看到错误报告:


行为已更新,允许从EF7-beta4开始将(…)包含到投影中,但是对于EF6或之前版本,此错误仍然存在。

请同时发布模型类的配置请添加更多信息?提前谢谢!然后
m.Author
null
。此特定记录没有
AuthorID
。请同时发布模型类的配置请添加更多信息?提前谢谢!然后
m.Author
null
。此特定记录没有
AuthorID
。什么是“选择其他类型时包含不再加载相关实体”的含义?这不是真的。我完全不明白你的答案有什么变化。如果急切地加载了
Author
,则此属性在您的解决方案中将为null。更新了答案并回复了您的评论。“当您选择其他类型时,包含不再加载相关实体”应该是什么意思?这不是真的。我完全不明白你的答案有什么变化。如果急切地加载了
Author
,则此属性在您的解决方案中将为null。更新了对您的评论的答复。您的链接显示它不是bug。它不是为在EF6中工作而设计的。它在EF7中工作,现在得到了支持,但这并不意味着它在EF6中是一个bug。您的链接显示它不是bug。它不是为在EF6中工作而设计的。它在EF7中工作,现在得到了支持,但这并不意味着它在EF6中是一个bug。