У меня очень странное поведение с EF code first approach и ассоциациями. У меня есть две сущности:
public class GlobalKpiSectionn
{
public GlobalKpiSection()
{
this.Regions = new HashSet<Region>();
}
public virtual ICollection<Region> Regions { get; protected set; }
}
public class Region
{
public int RegionId { get; set; }
public bool IsMain { get; set; }
[Required]
public virtual GlobalKpiSection KpiSection { get; set; }
}
Мне нужен необходимый атрибут на свойстве KiSection, чтобы получить каскадное удаление.
Проблема заключается в следующем - в этом коде:
var mainRegion = context.Regions.Single(x => x.RegionId == id);
mainRegion.IsMain = true;
context.SaveChanges();
Я получаю исключение, что поле Required не инициализировано. Но оно есть, просто не загружено. Я не хочу писать везде явные include для свойств, когда я использую эту сущность. Что я могу сделать, чтобы решить эту проблему?
UPDATE
Причина, по которой я уверен, что это проблема ленивой загрузки, заключается в следующем:
var primaryRegion = context.Regions
.Include(x => x.KpiSection)
.Single(x => x.RegionId == id);
Решает проблему, но это определенно ужасное решение.