部分急切加载子实体(加载特定字段)

时间:2011-06-09 08:54:00

标签: c# .net ado.net entity-framework-4

我搜索了一下,并且明白我可以use projection to partially load an entity,问题变成是否有办法让部分渴望装载孩子? 说我有以下

实体A有

Id
Name
EntityB

和实体B有

Id
StuffToBeLoaded1
StuffToBeLoaded2
OtherStuffNotToBeLoaded

如何用B加载A,B只有stuffToBeLoaded1和stuffToBeLoaded2? 我想我不能打电话.Inlucde(“EntityB”)否则它已满载,是吗?

1 个答案:

答案 0 :(得分:3)

您必须对投影使用自定义查询。如果EntityB属性表示集合,则可以使用以下内容:

var query = from a in context.EntitiesA
            select new 
               {
                  a.Id,
                  a.Name,
                  Bs = a.EntityB.Select(b => new { 
                       b.StuffToBeLoaded1, 
                       b.StuffToBeLoaded2 
                  })
               };

如果EntityB不是集合导航属性,您只需使用:

var query = from a in context.EntitiesA
            select new 
               {
                  a.Id,
                  a.Name,
                  a.EntityB.StuffToBeLoaded1, 
                  a.EntityB.StuffToBeLoaded2 
               };