我正在使用实体框架,我有几种情况我应该运行查询而不是返回一些主行,并且在我的报告中使用这些主行和相关的子项之后。
我想知道哪些方法具有更好的性能:(或者还有其他更好的方法???)
方法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()会导致主行重复吗?
但无论如何,我想要对这三种方法提出一般意见。
谢谢!