2014-10-06 69 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