我有以下非常慢的查询。我是 Entity Framework 的新手,我相信它必须与 Eager Loading、Lazy Loading 或 Explicit Loading 相关。需要帮助优化以下 C# 语句。
var queryResult = CurrentSession.Set<SomeType_T>().Include(a => a.SomeType1_T)
.Include(a => a.SomeType1_T.Catalog_Type_T)
.Include(a => a.SomeType1_T.SomeType4_T)
.Include(a => a.SomeType1_T.SomeType2_T)
.Include("SomeType1_T.SomeType2_T.SomeType3_T")
.Include(a => a.SomeType1_T.SomeType4_T.SomeType5_T)
.Include(a => a.SomeType1_T.SomeType5_T)
.Include(a => a.SomeType1_T.Questions_T)
.Include(a => a.SomeType1_T.Questions_T.Question_Type_T)
.Include(a => a.SomeType1_T.Members_T)
.Include(b => b.SomeMasterType_T)
.Include(b => b.SomeMasterType_T.SomeMasterType1_T)
.Include(c => c.SomeType6_T)
.Include(d => d.SomeType7_T)
.Include(d => d.SomeType8_T)
.Include(d => d.SomeType8_T1)
.Where(t => t.SomeType9_T == _MatchThisKey);
最佳答案
您可以通过从数据库创建 2 个或更多小数据请求来提高许多包含的性能,如下所示。根据我的经验,您可以为每个查询提供最多 2 个包含。超过这个数量会带来非常糟糕的性能。是的,这是丑陋的。但它会带来非常好的性能提升。你也可以尝试感受一下:)
注意:这只是一个例子。
var userData = from u in db.Users
.Include(p=>p.UserSkills)
.Include(p=>p.UserIdeas)
.FirstOrDefault();
userData = from u in db.Users
.Include(p=>p.UserFriends)
.Include(p=>p.UserFriends1)
.FirstOrDefault();
上面将使用多个遍历从数据库中获取小数据集。
关于c# - Entity Framework .include 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39095636/