【发布时间】:2012-01-18 21:21:20
【问题描述】:
请帮助我,我是 EF 新手。POCO 对象的延迟加载似乎不起作用。
- 我的 POCO 类在一个单独的程序集中,而不是用于数据访问(即 DAL)的程序集
-
Data Acess 层只是封装了对 EF 对象上下文的调用。请看下面的代码
public FilterMaster GetFilter(long ID) { FilterMaster entity = new FilterMaster(); try { using (var context = new RadarEntities()) { //context.ContextOptions.LazyLoadingEnabled = false; //context.ContextOptions.ProxyCreationEnabled = true; entity = context.FilterMasters.SingleOrDefault(filter => filter.ID == ID); //context.FilterMasters.Include( context.LoadProperty(entity, "SQLQuery"); } }- DAL 调用完成后,ObjectContext 丢失,当我尝试获取 Root POCO 类的相关子对象时,我得到 null。
- 我已尝试显式启用 ProxyCreation、EnabledLazyLoading,检查生成的代理类未密封并且所有相关属性都标记为虚拟(如其他一些链接中所建议的那样)。 - 由于延迟加载不起作用,我想急切地加载所有相关的 POCO 对象,所以尝试调用 LoadProperty 方法,它有效。
Q1:我错过了延迟加载不起作用的东西吗?
Q2:如果我想明确加载所有相关的子对象,则必须为所有属性调用 LoadProperty 方法,还是有更简单的方法?
【问题讨论】:
标签: c# entity-framework entity-framework-4