【问题标题】:Entity Framework 4: Encapsulate navigation properties in business objects实体框架 4:将导航属性封装在业务对象中
【发布时间】:2011-03-23 09:31:44
【问题描述】:

我想将所有 EF 实体封装在业务对象中。 EF 实体“Investment”将具有一个“BoInvestment”业务对象,该业务对象包含内部实体并路由所有属性。 对于导航属性来说,这是一个挑战。 假设我的“投资”有“报告”有一个延迟加载的 EntityCollection。 我的业务对象“BoInvestment”需要将此“报告”作为“BoReports”,因为“报告”也封装在业务对象中。 如果我只返回一个“IList”,则意味着所有报告总是加载到内存中。在实体化之前,我会失去 EntityCollection 只是一个 Querable 的 EF 优势。

任何想法:)

【问题讨论】:

    标签: entity-framework-4 business-objects


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      为什么不使用 IQueryable?这样,您仍将拥有查询组合和延迟加载的优势。

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

      【讨论】:

      • 我做了一个概念验证,它可以封装所有东西......但这会很复杂。因此我们将直接使用 EF 实体。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多