Я очень странное поведение с первым подходом и ассоциациями EF-кода. У меня есть два объекта:Entity framework 4.3 с обязательной ассоциацией
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();
Я получаю исключение, что Обязательное поле не инициализирована. Но это подарок просто не загружен. Я не то, что писать везде явным, включает в себя свойства, когда я использую этот объект. Что я могу сделать, чтобы преодолеть это?
UPDATE
Причина, почему я уверен, что его ленивая загрузка проблема в том, что:
var primaryRegion = context.Regions
.Include(x => x.KpiSection)
.Single(x => x.RegionId == id);
Решает проблему, но определенно ужасное решение.
Вы использовали класс конфигурации для моделирования один ко многим отношений? – Jayanga
Нет, его сопоставлены соглашениями – Sly
Я думаю, что использование класса конфигурации в Fluent API было бы хорошим решением – Jayanga