我想使用Entity Framework 4.2构建对象图。EF4使用POCO在单独查询中获取关联
现在,我有POCO实体,使用ICollection作为导航属性。我想避免使用EntityCollection或任何EF特定的。
我想避免由于使用过大而导致的大量连接。给定一个对象,我想填充它的导航属性,导致一个单独的数据库查询。
有没有办法直接填充ICollection?现在,我正在解决这个问题,但这真的很痛苦。
// grab the user, brand users and brands
User user = entities.Users
.Include(item => item.BrandUsers.Select(brandUser => brandUser.Brand))
.Where(item => item.Name == userName)
.SingleOrDefault();
// grab the pending share grants and brands
entities.Users
.Include(item => item.ToShareGrants.Select(shareGrant => shareGrant.Brand))
.Where(item => item.Id == user.Id)
.Load();
return user;
我不喜欢这种方法的一件事是我重新查询顶层对象。如果我不这样做,当没有对象返回时,导航属性不会被填充(留空)。例如,下面的代码如果仅仅作品被返回的结果:
entities.ShareGrants
.Include(item => item.Brand)
.Where(item => item.ToUserId == user.Id)
.Load();
我很好奇,如果有只是一个我是不是在实体框架意识到建立这些类型的关系的方法。如果有人知道一个简单的方法来填写导航属性的步骤,我会很感激的代码示例。
我关闭了延迟加载和代理生成。看来Include是填充导航属性的唯一方法。我正在寻找的是一种显式加载导航属性的方法(通过数据库查询)。 – 2012-01-27 01:02:42