【问题标题】:Should "DbContext" and "DbSet" be exposed for a pure POCO application是否应该为纯 POCO 应用程序公开“DbContext”和“DbSet”
【发布时间】:2012-07-25 20:27:02
【问题描述】:

有人可以告诉我“DbContext”和“DbSet”的预期(最佳实践)使用,其中数据消费者不应该依赖任何 EF(100% POCO)。虽然我找到的所有示例都解释了如何为底层数据源创建 POCO 类(通常对应于 RDBMS 表),但它们仍然向外界公开“DbContext”和“DbSet”(包括 MSFT 自己的关于如何进行数据绑定的示例与这些课程)。这似乎破坏或(严重地)淡化了使用 POCO 的好处。 IOW,客户端仍然绑定到 EF,而不是创建一些在内部使用 EF 的数据存储项目的更清洁(恕我直言)方法,但仅向其用户公开 POCO。为什么 EF 上的所有文章似乎都忽略了这一点(我错过了什么)。谢谢。

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    您通常会创建一个使用 DbContext 的服务层(例如基于存储库模式)。它的作用是在数据库和应用程序/客户端之间进行调解。它将接受来自客户端的 POCO 并将 POCO 返回给客户端。这样,客户端就知道存储库,但对 DbContext 一无所知。

    为您阅读更多内容:

    http://blogs.microsoft.co.il/blogs/gilf/archive/2010/01/20/using-repository-pattern-with-entity-framework.aspx http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx

    【讨论】:

    • 感谢您的信息。我将研究这些链接,但乍一看,它们似乎只不过是基于接口的包装器。没关系,这可能是我无论如何都会采用的策略(或类似的策略),但我很好奇为什么这种方法在 EF 本身中不可用。只有 MSFT 真正知道,但恕我直言,这是一个严重的缺点(ORM 本身不是即插即用的)。
    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 2020-02-10
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多