使用延迟加载删除具有导航属性的实体时出现DbUpdateException

时间:2014-02-24 11:27:15

标签: c# asp.net-mvc entity-framework entity-framework-5 asp.net-mvc-5

我有以下实体:

public class MyEntity
{
    public Guid? Id { get; set; }
    public string Name { get; set; }
    public virtual ApplicationUser User { get; set; }
}

我正试图以这种方式删除它:

var myEntity = await db.MyEntities.FindAsync(id);

if (myEntity != null)
{
    db.MyEntities.Remove(myEntity);
    await db.SaveChangesAsync();
}

它给了我这个错误:

An error occurred while saving entities that do not expose foreign key properties for their relationships

如果我手动.Include()导航属性,它可以正常工作。

我的问题有两个,为什么Lazy Loading没有加载任何必要的属性才能正常工作,是否有正确的方法来删除实体而无需事先手动.Include()每个导航属性?< / p>

1 个答案:

答案 0 :(得分:0)

正如我所怀疑的,延迟加载不再起作用,因为dbcontext已关闭或处于关闭状态。我通过切换到每个请求的单个DbContext(存储在HttpContext.Current.Items中)修复了我的所有问题