繁体   English   中英

实体框架入口负载相关实体

[英]Entity framework entry load related entity

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

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 ,这似乎没有任何作用。

您需要将Entity2virtual

public virtual Entity2 { get; set; }

EF会自动为您补水。

并且,如果您碰巧更改了Entity2Id并想重新加载更改后的实体,则可以通过以下方式明确地这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM