为了账号安全,请及时绑定邮箱和手机立即绑定

我可以在EntityFramework中的ObjectSet上使用多少Include以保持性能?

我可以在EntityFramework中的ObjectSet上使用多少Include以保持性能?

HUX布斯 2019-07-27 09:56:13
我可以在EntityFramework中的ObjectSet上使用多少Include以保持性能?我在我的个人资料页面使用以下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;它有一个长对象图并使用许多包含。它现在运行得很好,但是当网站有很多用户时,它会影响性能吗?我应该用其他方式吗?
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

是的,它会的。如果扩展主表行上的多个详细信息行,请避免使用Include。

我相信EF将查询转换为一个大型连接而不是几个查询。因此,您最终会在详细信息表的每一行上复制主表数据。

例如:Master - > Details。比如说,master有100行,Details有5000行(每个master有50行)。

如果延迟加载详细信息,则返回100行(size:master)+ 5000行(size:details)。

如果使用.Include(“Details”),则返回5000行(size:master + details)。基本上,主要部分重复50次。

如果包含多个表,它会向上相乘。

检查EF生成的SQL。


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 777 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信