C# 实体框架中对象属性中的空值

C# 实体框架中对象属性中的空值,c#,.net,asp.net,entity-framework,C#,.net,Asp.net,Entity Framework,表格:文章,作者,评论(一篇文章和一位作者可以有*评论) 数据库中有1篇文章、1位作者和1篇评论 问题是,这个代码 myBD my_bd = new myBD(); var articles = by_bd.Article; var comm = (from u in my_bd.Comment where ...... select u); 工作正常,我可以看到作者和文章都有一条评论 但是那密码

表格:
文章
作者
评论
(一篇文章和一位作者可以有*评论)

数据库中有1篇文章、1位作者和1篇评论

问题是,这个代码

 myBD my_bd = new myBD();
 var articles = by_bd.Article;
    var comm = (from u in my_bd.Comment
                     where ......
                     select u);
工作正常,我可以看到
作者
文章
都有一条评论

但是那密码

 myBD my_bd = new myBD();
 var articles = by_bd.Article;
    var comm = (from u in my_bd.Comment
                     where ......
                     select u);

返回注释,但其在属性
文章
作者
中具有空值。为什么?

实体框架还不支持延迟加载,默认情况下是悲观的。为了将链接对象作为集合获取,必须在查询中显式地包含它们

var comm = from u in my_bd.Comment.Include("Article").Include("Author")
           where ......
           select u;

这样做就是显式地告诉EF在创建查询时进行连接。现在您应该可以选择这些属性了。

作为使用.Include的替代方法,您可以在初始查询中使用.Load()方法显式加载,例如myCustomer.OrdersReference.Load()

在执行多少sql查询和传输多少数据方面显然存在差异


这里解释得很好:

谢谢你的帖子,现在它开始工作了:)顺便问一下,你知道一些关于实体框架的好书/电子书吗?事实上,我确实知道一本关于EF的好书:()但是值得注意,您可能希望开始研究EntityFramework4的可行性,因为它与您现在使用的非常不同。