我想在业务对象中封装所有EF实体。 EF实体“投资”将具有“BoInvestment”业务对象,该业务对象将实体保持在内部并路由所有属性。 对于属于挑战的导航属性。 假设我的“投资”有“报告”有一个延迟加载的EntityCollection。 我的业务对象“BoInvestment”需要将此“Reports”作为“BoReports”,因为“Report”也封装在业务对象中。 如果我只返回一个“IList”,则意味着所有报告总是被加载到内存中。我会放弃EF的优势,即EntityCollection只是一个Querable,直到它实现。
任何想法:)
答案 0 :(得分:1)
这个想法是直接将实体用作业务对象,而不是将其包装到新的对象层中。如果使用POCO而不是Entity对象,它将更好用。如果您想坚持使用当前架构,请检查Lazy<T>
- msdn。这可能是在业务对象上实现导航属性的一种方法。
答案 1 :(得分:0)
为什么不使用IQueryable?这样你仍然可以获得查询组合和延迟加载的优势。
另一个想法是利用EF生成的实体对象实际上是可以扩展为包含BO功能的部分类这一事实