EF 解析手动附加后的导航属性
本文关键字:导航 属性 EF | 更新日期: 2023-09-27 18:36:57
我正在使用实体框架。 我已使用以下方法将表示数据库中实体的 POCO 对象附加到我的数据库上下文中:
var entity = new MyEntity() { ID = 1, AnotherItemID = 10 };
context.Set<T>().Attach(entity);
目前为止,一切都好。 我可以访问该集并使用我添加的实体。 它以"未更改"状态添加。 但是,它只是一个 POCO 而不是代理。 因此,当我尝试访问导航属性(例如myEntity.AnotherItem)时,我只会返回一个null。
有谁知道是否有办法让 EF 解析以这种方式附加的 POCO 类的导航属性? 或者一种将 POCO 强制转换为代理类的方法?
谢谢
更新有两种方法可以解决这个问题(当然也可能有其他方法! 一个是下面答案中的显式加载选项。 允许延迟加载工作的另一种方法是在创建要附加的实体时使用 DBSet Create 方法而不是 POCO new 关键字。 有关这方面的更多信息,请点击此处:
EF4.3 代码优先,MVC,在开机自检操作中附加后延迟加载
您可以使用显式加载:
//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();