2011-05-16 56 views
1

任何人都可以解释为什么公司返回,但Company.CompanyServices为null(即使我已经在测试中创建了一个)?EF4.1回到顶端加载链接的对象返回null

 public List<Company> GetContactCompanies(int contactId) 
     { 
      var query = (
         from directorCompany in ctx.CompanyDirectors 
          .Where(d => d.ContactAddress.Contact.Id == contactId) 
          .Include(d => d.Company.CompanyServices) 
         select directorCompany.Company 
        ).OrderBy(c => c.CompanyName).Distinct(); 
      return query.ToList(); 
     } 

注取代包括.Include("Company.CompanyServices")没有效果

回答

2

是对Company.CompanyServices属性标记为虚拟? Check out ScottGu's blog对实体框架,他创建POCO类与一对多关系他标记集合属性为虚拟。

当我第一次开始使用EF 4时,这让我难住了很长一段时间。

很明显,我看不到你的实体类,所以这可能是一个有争议的问题!

+0

耶它的虚拟 - 该项目是代码优先,所以没有选择那里。 – 2011-05-16 16:00:48

+0

这是EFCF最常被忽视的问题,我必须承认我自己浪费了几个小时。如果该属性*绝对*虚拟,那么通过'DbContext'配置设置恰当映射关系? – Yuck 2011-05-18 00:40:42

0

找到了一个不完全直观的答案,但它的作用是最主要的。

高兴地看到一个原始查询起着...

var query = (
        from directorCompany in ctx.CompanyDirectors 
         .Where(d => d.ContactAddress.Contact.Id == contactId) 
        select directorCompany.Company 
       ).OrderBy(c => c.CompanyName).Distinct(); 
     return query.Include(c => c.CompanyServices).ToList();