DbUpdateException在使用时的延迟加载

问题描述:

删除与导航属性的实体,我有以下实体:DbUpdateException在使用时的延迟加载

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()的导航属性,它工作正常。

我的问题是双折叠,为什么懒加载不加载任何属性是必要的,这只是工作,并且有没有一种正确的方法来删除实体,而不必手动.Include()每一个导航属性事先?

+0

这是什么执行环境? ASP.NET? – Noseratio

+0

MVC 5,我会添加标签 –

+0

我想我发现我的问题,db可能没有任何形状来延迟加载任何东西,我做db.SaveChangesAsync()。如果我在创建一个新的数据库上下文之前这样做可以正常工作。如果有一种方法可以在没有上下文困扰导航属性值的情况下删除它,它仍然会很好。 –

正如我怀疑的那样,由于dbcontext已关闭或处于某种关闭状态,因此延迟加载不再有效。我通过切换到每个请求的单个DbContext(存储在HttpContext.Current.Items中)来修复所有问题