Ami*_*ail 2 .net c# linq entity-framework-4.1
我试图得到一个List<EntityType>,每个项目有大约15个我需要加载的导航属性,一些导航属性有一个我需要加载的navingation属性,这是一个示例代码
class AA
{
public EntityReference<B> Bobj
{
get;
set;
}
public EntityCollection<C> CCollection
{
get;
set;
}
}
class B
{
public EntityCollection<X> XCollection
{
get;
set;
}
}
class C
{
public EntityReference<Y> YObj
{
get;
set;
}
}
List<AA> AList = Dbcontext.AAs.Where(a => a.ID==4).ToList();
Run Code Online (Sandbox Code Playgroud)
我想每个项目中List<AA>已经载入了BObj与它XCollection和所有CCollection带项目YObj的每一个.
我尝试使用它来加载它们Include,Load但我认为有一种优雅的方法可以做到这一点
我也尝试设置LazyLoadingEnabled到false但简化版,加载全图我不知道为什么?
所以,我需要最好的方法来加载我的完整图表 EntityType
我正在使用数据库第一种方法EF 4.1和C# 4.0
这是我拾起的一个巧妙的技巧:
List<AA> AList = Dbcontext.AAs.Where(a => a.ID==4)
.Select(a => new {a, a.Bobj, a.CCollection})
.ToList().Select(o => o.a).ToList();
Dbcontext.Bs.Where(b => b.A.ID==4)
.Select(b => new {b, b.XCollection})
.ToList();
Dbcontext.Cs.Where(c => c.A.ID==4)
.Select(c => new {c, c.YObj})
.ToList();
Run Code Online (Sandbox Code Playgroud)
实体框架将弄清楚这些不同对象是如何连接的.您将进行可管理的往返次数(在这种情况下为3次),并且生成的SQL查询结果将具有相对较少的重复数据.