2014-10-06 105 views
0

比方說,我有以下的自動生成的實體實體框架入門負載相關的實體

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); 
} 

目前entityEntity2Id屬性集,但不包含Entity2屬性集。我如何爲entity對象中的所有相關實體提供水合物。

我試着做

_db.Find(entity.ID) 

如果我把這個方法調用SaveChanges它檢索不具有Entity2水合緩存的實體之後。如果我把它放在Entry呼叫之前,我會在Entry調用中遇到一個錯誤,說該條目已經存在。我也嘗試在條目上撥打Reload,這似乎沒有做任何事情。

回答

1

你需要有Entity2virtual

public virtual Entity2 { get; set; } 

EF會自動水合物是給你的。

如果你碰巧改變Entity2Id並要重新加載改變的實體,你可以這樣做明確:

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

我可以使用這種技術,如果我第一次使用EF數據? – Vadim 2014-10-06 19:17:10

+0

實際上它看起來像'Load'處理它就好了。謝謝! – Vadim 2014-10-06 19:20:50