Linq to sql EF4.1已加载的链接对象返回null

Linq to sql EF4.1已加载的链接对象返回null,linq-to-sql,entity-framework-4,eager-loading,Linq To Sql,Entity Framework 4,Eager Loading,有人能解释为什么返回公司,但Company.CompanyServices为null(即使我在测试中创建了一个) 公共列表GetContactCompanys(int contactId) { 变量查询=( 来自ctx.CompanyDirectors中的directorCompany .其中(d=>d.ContactAddress.Contact.Id==contactId) .包括(d=>d.Company.CompanyServices) 选择directorCompany.Company

有人能解释为什么返回公司,但Company.CompanyServices为null(即使我在测试中创建了一个)

公共列表GetContactCompanys(int contactId)
{
变量查询=(
来自ctx.CompanyDirectors中的directorCompany
.其中(d=>d.ContactAddress.Contact.Id==contactId)
.包括(d=>d.Company.CompanyServices)
选择directorCompany.Company
).OrderBy(c=>c.CompanyName).Distinct();
返回query.ToList();
}

注意:将Include替换为
.Include(“Company.CompanyServices”)
无效

Company.CompanyServices属性是否标记为虚拟?在实体框架上,他创建具有一对多关系的POCO类,并将集合属性标记为虚拟

当我第一次开始使用EF4时,这让我困惑了好一阵子


显然,我看不到您的实体类,所以这可能是一个没有实际意义的问题

找到了一个不完全实用的答案,但它是有效的,这是最主要的

很高兴看到一个在原始查询上播放

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();

是的,它是虚拟的——项目是代码优先的,所以别无选择。这是EFCF最常被忽视的问题,我必须承认我自己也在上面浪费了很多时间。如果属性确实是虚拟的,那么关系是否通过
DbContext
配置设置正确映射?
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();