2
我正在使用实体框架。我已经把它贴表示数据库实体到我的DbContext使用POCO对象:手动附加后EF解析导航属性
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 Code-First, MVC, Lazy Loading After Attaching in POST Action
嗨@octavioccl感谢您的快速回复。我试图通过延迟加载实现解决方案,所以我不必事先考虑要明确加载的内容。但也许我在这个时候太懒惰了! – Kate
问题,您的导航属性是否为“虚拟”,因为这是延迟加载的要求。在附加之后,您应该可以延迟加载您的相关实体。 – octavioccl
是的,他们是虚拟的。如果我实际从数据库中检索实体,它们会执行延迟加载。那么即使手动创建和附加实体,他们是否应该自动加载?也许我没有正确地附加它? – Kate