2012-04-24 110 views
2

我想急于负载,像这样一些子实体:贪婪加载实体框架导航属性错误

_context.Sites.Where(x => x.ID == siteID).Include(s => s.SiteLoggers).FirstOrDefault(); 

不过,我得到的错误是:

A specified Include path is not valid. The EntityType 'MyProject.Dal.EF.Site' does not declare a navigation property with the name 'SiteLoggers'. 

什么要说的是正确,因为MyProject.Dal.EF.Site不存在,该对象存在于MyProject.Domain.Entities.Site

我失踪了什么?谢谢!

波苏斯:

namespace MyProject.Domain.Entities 
{ 
    public class Site 
    { 
     public int ID { get; set; } 
     public int LocationID { get; set; } 
     public bool Active { get; set; } 
     public bool Deleted { get; set; } 
     public string Name { get; set; } 
     public virtual Location Location { get; set; } 
     public virtual IEnumerable<SiteLogger> SiteLoggers { get; set; } 
    } 
} 

namespace MyProject.Domain.Entities 
{ 
    public class SiteLogger 
    { 
     public int ID { get; set; } 
     public int UID { get; set; } 
     public int SiteID { get; set; } 
     public string Name { get; set; } 
     public int LocationID { get; set; } 
     public bool Active { get; set; } 
     public bool Deleted { get; set; } 
     public virtual Site Site { get; set; } 
     public virtual Location Location { get; set; } 
    } 
} 

回答

3

您需要使用ICollection代替IEnumerable,因为EF要求您的导航属性被定义为ICollection<T>.

public virtual ICollection <SiteLogger> SiteLoggers { get; set; } 
+0

太好了!谢谢!这也可以解释一些其他奇怪的行为!在花费半天的时间之前,应该先来这里过网。 – Matt 2012-04-24 08:17:26