Должны ли следующие два запроса быть эквивалентными?(обратите внимание на размещение .Include)
== (V1)
using (var ctx = new Entities()) {
ctx.Configuration.ProxyCreationEnabled = false; //return stronglyTyped Entity, not dynamic entity...
IQueryable<TB_MyHeader> query = from hd in ctx.TB_MyHeader.Include(h => h.TB_MyLines)
join wo in ctx.TB_AnotherTable on hd.fkId equals wo.ID
where wo.woPk == @id
orderby hd.PoItem
select hd;
var headerPlusLines = query
.AsNoTracking()
.ToList();
return headerPlusLines;
}
== (V2)
using (var ctx = new Entities()) {
ctx.Configuration.ProxyCreationEnabled = false; //return stronglyTyped Entity, not dynamic entity...
IQueryable<TB_MyHeader> query = (from hd in ctx.TB_MyHeader
join wo in ctx.TB_AnotherTable on hd.fkId equals wo.ID
where wo.woPk == @id
orderby hd.PoItem
select hd)
.Include(h => h.TB_MyLines);
var headerPlusLines = query
.AsNoTracking()
.ToList();
return headerPlusLines;
}
Первая версия (V1) может неизвлекать дочерние элементы в свойство Nav, в зависимости от сочетания того, как ProxyCreationEnabled и LazyLoadingEnabled установлены в значение true / false.
Фактически, происходит противоположное ожидаемому результату;если я установил LazyLoadingEnabled = false, дочерние элементы вообще не загружаются;Когда я ожидал, что он не будет ленивым, загрузите его сейчас!
Что происходит?