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的可行性,因为它与您现在使用的非常不同。