我有一个使用 .NET 4.5 下的 Entity Framework 5 的 ASP.NET MVC 4 应用程序。我遇到的问题是,当我插入在前端创建的分离实体时,延迟加载不起作用。
这是我要添加(或更新)的代码:
public static int PersistMergeEntity(EntityTwo entityTwo)
{
int entityId;
using (var _db = new EntityDb())
{
if (_db.EntityTwo.Any(e => e.EntityTwoId == entityTwo.EntityTwoId))
{
_db.Entry(entityTwo).State = EntityState.Modified;
}
else
{
_db.EntityTwo.Add(entityTwo);
}
_db.SaveChanges();
//_db.Entry(entityTwo).Reference(e => e.EntityOne).Load();
entityId = entityTwo.EntityOne.EntityId;
}
EntityBo.UpdateData(entityId);
return entityTwo.EntityTwoId;
}
这是我的实体:
public class EntityTwo
{
[Key]
[ForeignKey("EntityOne")]
public int EntityTwoId { get; set; }
public Decimal NbValue { get; set; }
public virtual EntityOne EntityOne { get; set; }
}
public class EntityOne
{
[Key]
[ForeignKey("EntityTwo")]
public int EntityOneId { get; set; }
[ForeignKey("Entity")]
public int EntityId { get; set; }
public CsMonthDomain CsMonth { get; set; }
public int NbYear { get; set; }
public Decimal NbValue { get; set; }
public virtual Entity Entity { get; set; }
public virtual EntityTwo EntityTwo { get; set; }
}
并且Entity
是我每次更新或添加时都需要进行计算的另一个实体EntityTwo
。
该代码在注释行未注释时有效。但如果它是那里显示的方式,延迟加载将不起作用,我会得到一个null
异常。延迟加载设置为true
并且实体应该是正确的,因为它在我显式加载导航属性时起作用。
我很抱歉这些名字,但不幸的是我不能发布真正的代码;(