Использование модели EF 6, Lazy Loading Enabled
установлено в True
в модели. Вот пример моей проблемы:EF6, ленивая загрузка не работает должным образом
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 результатов в первом запросе, а затем? Я не могу понять, что здесь не так, любая помощь будет оценена.
Показать, ваши сущности, для ленивой загрузки в сущности Агент должен быть виртуальным. – BWA
@BWA Просто добавил их. – Antrim
смотрите [это] (http://stackoverflow.com/questions/22031536/ef-code-first-lazy-loading-not-working) и [это] (http://stackoverflow.com/questions/21951367/ entity-framework-6-lazy-load-not-working), может быть, это поможет вам – BWA