实体框架:比较查询的性能

时间:2015-02-11 04:44:16

标签: entity-framework

我正在使用实体框架,我有几种情况我应该运行查询而不是返回一些主行,并且在我的报告中使用这些主行和相关的子项之后。

我想知道哪些方法具有更好的性能:(或者还有其他更好的方法???)

方法1 :(稍后使用延迟加载加载子实体)

Dim lista as IQueryable(Of MyObj) = (From t In context.MyObjs Where(..condition..) select t).Tolist 

方法2:

Dim lista as IQueryable(Of MyObj) = (From t In context.MyObjs Where(..condition..) _
            .Include(Function(t2) t2.Childs1) _
             .Include(Function(t2) t2.Childs2) _
             .Include(Function(t2) t2.Childs2.Child22) _
              .Include(Function(t2) t2.Childs1.Childs11) _
              .Include(Function(t2) t2.Childs1.Childs12) _
              Select t).ToList

方法3:

Dim lista as IQueryable(Of MyObj)
Dim lst= (From t2 In context.MyObjs Where(..condition..) Select New with _
       {    .Parent=t2
            .ch1=t2.Childs1 _
             .ch2=t2.Childs2 _
             .ch21=t2.Childs2.Child21) _
             .ch11=t2.Childs1.Childs11) _
              .ch12= t2.Childs1.Childs12 _
              ).ToList
 lista=lst.Select(Function(t2) t2.parent)

我注意到第一种方法导致报告打开速度很慢。我还在某处读到Include()会导致主行重复吗?

但无论如何,我想要对这三种方法提出一般意见。

谢谢!

0 个答案:

没有答案