我是一个使用EF Code First方法和关联的非常奇怪的行为。我有两个实体:
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属性上添加required属性。
问题在于以下代码:
var mainRegion = context.Regions.Single(x => x.RegionId == id);
mainRegion.IsMain = true;
context.SaveChanges();
我遇到了一个异常问题,提示必需的字段未初始化,但该字段已经存在,只是没有加载。当我使用此实体时,我不想为属性处处显式包含代码。有什么方法可以解决这个问题呢?
更新
我确定这是延迟加载的问题的原因是:
var primaryRegion = context.Regions
.Include(x => x.KpiSection)
.Single(x => x.RegionId == id);
解决了问题,但这绝对是一个糟糕的解决方案。