【发布时间】:2017-06-23 08:54:42
【问题描述】:
使用 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 个结果呢?我无法弄清楚这里出了什么问题,任何帮助将不胜感激。
【问题讨论】:
标签: c# .net entity-framework linq entity-framework-6