应该为纯POCO应用程序公开“DbContext”和“DbSet”

时间:2012-07-25 20:27:03

标签: entity-framework

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

1 个答案:

答案 0 :(得分:3)

您通常会创建一个使用DbContext的服务层(例如,基于Repository模式)。它的作用是在数据库和应用程序/客户端之间进行调解。它将接受来自客户的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