我正在使用实体框架。我使用以下命令将代表数据库中实体的POCO对象附加到我的dbcontext中:
var entity = new MyEntity() { ID = 1, AnotherItemID = 10 };
context.Set<T>().Attach(entity);
到目前为止,一切都很好。我可以访问集合并使用添加的实体。它以“未更改”状态添加。但是,它只是POCO,而不是代理。因此,当我尝试访问导航属性(例如myEntity.AnotherItem)时,只会得到一个空值。
有谁知道是否有一种方法可以让EF解析以这种方式附加的POCO类的导航属性?还是将POCO强制转换为代理类的方法?
谢谢
更新有两种方法可以解决此问题(当然也可能有其他方法!)。一种是下面的答案中的“显式加载”选项。允许延迟加载工作的另一种方法是,在创建要附加的实体时使用DBSet Create方法而不是POCO new关键字。有关此的更多信息:
您可以使用“显式加载”:
//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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句