簡體   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