使用EF 6,模型中的Lazy Loading Enabled
设置为True
。这是我的问题的一个例子:
var agent = context.AgentDetail.Where(a => a.Agent.GroupCode == "1234");
运行它将返回5个结果。如果之后我运行(仅用于测试)
var code = agent.FirstOrDefault().Agent.GroupCode;
我得到一个空引用异常,因为Agent
是null
。
以下是我的实体:
public partial class AgentDetail : Entity<int>
{
public Nullable<System.DateTime> Date { get; set; }
public string Name { get; set; }
public decimal Balance { get; set; }
...
public virtual Agent Agent { get; set; }
}
public partial class Agent : Entity<int>
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Agent()
{
this.AgentAspNetUsers = new HashSet<AgentAspNetUsers>();
this.AgentDetail = new HashSet<AgentDetail>();
}
public string GroupCode { get; set; }
...
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<AgentAspNetUsers> AgentAspNetUsers { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<AgentDetail> AgentDetail { get; set; }
}
那么在第一个查询中它怎么能给我5个结果呢?我无法弄清楚这里有什么问题,任何帮助都会受到赞赏。
答案 0 :(得分:0)
尝试定义实体之间的关系。如果您的延迟加载已启用,它应该有效。
答案 1 :(得分:0)
来自Requirements for Creating POCO Proxies
在课程上检查这一点。在您粘贴的代码中AgentDetail
没有公共/受保护的构造函数。