Entity framework 应该";DbContext";及;“数据库集”;暴露于纯POCO应用程序中

Entity framework 应该";DbContext";及;“数据库集”;暴露于纯POCO应用程序中,entity-framework,Entity Framework,有人能告诉我“DbContext”和“DbSet”的预期(最佳实践)用法吗?在这种用法中,数据使用者不应该依赖EF(100%POCO)。虽然我找到的所有示例都解释了如何为底层数据源创建POCO类(通常对应于RDBMS表),但它们仍然向外界公开“DbContext”和“DbSet”(包括MSFT自己关于如何与这些类进行数据绑定的示例)。这似乎挫败了或(严重地)淡化了使用POCO的好处。照此看来,客户机仍然绑定到EF,而不是创建一些内部使用EF的数据存储项目的cleaner(IMHO)方法,但只向其

有人能告诉我“DbContext”和“DbSet”的预期(最佳实践)用法吗?在这种用法中,数据使用者不应该依赖EF(100%POCO)。虽然我找到的所有示例都解释了如何为底层数据源创建POCO类(通常对应于RDBMS表),但它们仍然向外界公开“DbContext”和“DbSet”(包括MSFT自己关于如何与这些类进行数据绑定的示例)。这似乎挫败了或(严重地)淡化了使用POCO的好处。照此看来,客户机仍然绑定到EF,而不是创建一些内部使用EF的数据存储项目的cleaner(IMHO)方法,但只向其用户公开POCO。为什么所有关于EF的文章似乎都忽略了这一点(我是否遗漏了一些东西)。谢谢。

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

为您提供更多阅读:


谢谢您提供的信息。我将研究这些链接,但乍一看,它们似乎只是基于接口的包装器。这很好,而且这可能是我无论如何都会追求的策略(或者类似的策略),但我很好奇为什么EF本身就没有这种方法。只有微软真正知道,但这是一个严重的短期IMHO(ORM本身不是即插即用的开箱即用)。