实体框架中对象属性中的NULL值

时间:2010-02-12 13:16:44

标签: c# .net asp.net entity-framework

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

在数据库中有1篇文章,1位作者和1位评论。

问题是,那段代码

 myBD my_bd = new myBD();
 var articles = by_bd.Article;

正常,我可以看到AuthorArticle有1条评论。

但那段代码

    var comm = (from u in my_bd.Comment
                     where ......
                     select u);

返回注释,但在属性ArticleAuthor中有NULL值。为什么?

2 个答案:

答案 0 :(得分:3)

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

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

通过这样做,您明确告诉EF在创建查询时执行连接。现在您应该能够选择这些属性了。

答案 1 :(得分:0)

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

执行的SQL查询数量和传输的数据量明显存在差异。

在这里解释一下:http://www.robbagby.com/entity-framework/is-lazy-loading-in-ef-4-evil-or-the-second-coming/