Kas*_*han 2 .net c# entity-framework lazy-loading eager-loading
我有以下查询非常慢。我是 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);
Run Code Online (Sandbox Code Playgroud)
您可以通过从数据库创建 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();
Run Code Online (Sandbox Code Playgroud)
以上将通过多次遍历将数据库中的小数据集带到数据库中。
| 归档时间: |
|
| 查看次数: |
2045 次 |
| 最近记录: |