C# 实体框架条目加载相关实体

C# 实体框架条目加载相关实体,c#,.net,asp.net-mvc,entity-framework,C#,.net,Asp.net Mvc,Entity Framework,假设我有以下自动生成的实体 public class Entity1 { public int Id { get; set; } public int Entity2Id { get; set; } public Entity2 { get; set; } } public class Entity2 { public int Id { get; set; } } 我的MVC应用程序中有一个更新方法,如下所示: public ActionResult Edit

假设我有以下自动生成的实体

public class Entity1
{
    public int Id { get; set; }
    public int Entity2Id { get; set; }
    public Entity2 { get; set; }
}

public class Entity2
{
    public int Id { get; set; }
}
我的MVC应用程序中有一个更新方法,如下所示:

public ActionResult Edit(Entity1 entity)
{
    _db.Entry(entity).State = EntityState.Modified;
    _db.SaveChanges();
    DoSomething(entity);
}
当前,
entity
具有
Entity2Id
属性集,但没有
Entity2
属性集。如何将
实体
对象中的所有相关实体水合

我试过了

_db.Find(entity.ID)

如果我在调用
SaveChanges
后将该方法放在右边,它将检索没有
Entity2
水合的缓存实体。如果我把它放在
Entry
调用之前,我会在
Entry
调用中得到一个错误,指出一个条目已经存在。我还尝试在条目上调用
Reload
,这似乎没有任何作用。

您需要将
Entity2
设置为
virtual

public virtual Entity2 { get; set; }
EF将为您自动补充水分

如果您碰巧更改了Entity2Id并希望重新加载更改后的实体,您可以明确地说:

context.Entry(entity).Reference(p => p.Entity2).Load(); 

如果我首先使用EF数据,我可以使用这种技术吗?实际上,它看起来像是在执行
加载操作
时处理得很好。谢谢