手动附加后,EF解析导航属性

时间:2016-03-01 13:25:21

标签: c# entity-framework

我正在使用实体框架。我使用以下命令将表示DB中实体的POCO对象附加到我的dbcontext:

var entity = new MyEntity() { ID = 1, AnotherItemID = 10 };
context.Set<T>().Attach(entity);

到目前为止一切顺利。我可以访问该集并使用我添加的实体。它是在Unchanged状态下添加的。但是,它只是一个POCO而不是代理。因此,当我尝试访问导航属性时,例如myEntity.AnotherItem,我只是得到一个null。

有没有人知道是否有办法让EF解决以这种方式附加的POCO类的导航属性?或者将POCO转换为代理类的方法?

由于

更新 有两种方法可以解决这个问题(当然也可能有其他方法!)。一个是下面答案中的Explicit Loading选项。另一种允许延迟加载工作的方法是在创建要附加的实体时使用DBSet Create方法而不是POCO new关键字。关于这里的更多信息:

EF4.3 Code-First, MVC, Lazy Loading After Attaching in POST Action

1 个答案:

答案 0 :(得分:4)

您可以使用Explicity Loading

 //When you want to load a reference navigation property
 context.Entry(entity).Reference(p => p.AnotherItem).Load(); 

 //When you want to load a collection navigation property
 context.Entry(post).Collection(p => p.Items).Load();