实体框架4:封装业务对象中的导航属性

时间:2011-03-23 09:31:45

标签: entity-framework-4 business-objects

我想在业务对象中封装所有EF实体。 EF实体“投资”将具有“BoInvestment”业务对象,该业务对象将实体保持在内部并路由所有属性。 对于属于挑战的导航属性。 假设我的“投资”有“报告”有一个延迟加载的EntityCollection。 我的业务对象“BoInvestment”需要将此“Reports”作为“BoReports”,因为“Report”也封装在业务对象中。 如果我只返回一个“IList”,则意味着所有报告总是被加载到内存中。我会放弃EF的优势,即EntityCollection只是一个Querable,直到它实现。

任何想法:)

2 个答案:

答案 0 :(得分:1)

这个想法是直接将实体用作业务对象,而不是将其包装到新的对象层中。如果使用POCO而不是Entity对象,它将更好用。如果您想坚持使用当前架构,请检查Lazy<T> - msdn。这可能是在业务对象上实现导航属性的一种方法。

答案 1 :(得分:0)

为什么不使用IQueryable?这样你仍然可以获得查询组合和延迟加载的优势。

另一个想法是利用EF生成的实体对象实际上是可以扩展为包含BO功能的部分类这一事实