我在我的个人资料页面使用以下LINQ查询:
var userData = from u in db.Users
.Include("UserSkills.Skill")
.Include("UserIdeas.IdeaThings")
.Include("UserInterests.Interest")
.Include("UserMessengers.Messenger")
.Include("UserFriends.User.UserSkills.Skill")
.Include("UserFriends1.User1.UserSkills.Skill")
.Include("UserFriends.User.UserIdeas")
.Include("UserFriends1.User1.UserIdeas")
where u.UserId == userId
select u;
Run Code Online (Sandbox Code Playgroud)
它有一个长对象图并使用许多包含.它现在运行得很好,但是当网站有很多用户时,它会影响性能吗?
我应该用其他方式吗?
linq performance linq-to-entities entity-framework asp.net-mvc-2
关于EF4与NHibernate相比,我听到的少数有效投诉之一就是EF4在处理延迟加载的集合方面很差.例如,在一个延迟加载的集合中,如果我说:
if (MyAccount.Orders.Count() > 0) ;
Run Code Online (Sandbox Code Playgroud)
EF将整个系列拉下来(如果还没有),而NH将足够智能发出一个 select count(*)
NH还有一些很好的批量提取来帮助解决这个select n + 1问题.据我了解,最接近的EF4可以使用Include方法.
EF团队是否有任何迹象表明这将在下一次迭代中修复?我知道他们在POCO上很努力,但这似乎是一个受欢迎的解决方案.