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

时间:2014-10-06 18:49:23

标签: 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(Entity1 entity)
{
    _db.Entry(entity).State = EntityState.Modified;
    _db.SaveChanges();
    DoSomething(entity);
}

目前entity设置了Entity2Id属性,但未设置Entity2属性集。如何在entity对象中保留所有相关实体。

我已经尝试过了

_db.Find(entity.ID)

如果我在调用SaveChanges之后立即使用该方法,则会检索没有Entity2水合的缓存实体。如果我在Entry调用之前将其放入,我会在Entry调用中收到错误消息,指出条目已存在。我还尝试在条目上调用Reload,这似乎没有做任何事情。

1 个答案:

答案 0 :(得分:1)

您需要Entity2作为virtual

public virtual Entity2 { get; set; }

EF会为你自动补水。

如果您碰巧更改了Entity2Id并希望重新加载已更改的实体,您可以通过以下方式明确地执行此操作:

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