我一直在构建一个具有中央数据库的系统。多个应用程序将在数据库之上运行。因此,我不必维护多个实体框架图和设置,而是将所有实体框架类放入一个专用程序集中,该程序集将在所有使用数据库的解决方案中共享。到目前为止,这工作得很好。
目前,我已经使用实体框架来生成派生的 DbContext。
然而,我发现在某些情况下,拥有一个对象上下文对于我想要完成的事情会更方便。一个例子是引用实体的一个非常简单的(键->值)缓存解决方案。我使用“引用实体”这个名称来描述那些提供比提供字符串值或查找更多功能的实体。在这种情况下,从 DbContexts 缓存实体对象很麻烦,因为您不能简单地将它们添加到另一个 DbContext - 如果需要,您必须附加它。(这是我头顶的一个例子,所以不要太担心在上面挖洞!)。
因此,我认为在我的共享程序集中提供 DbContext API 和 ObjectContext API 可能是值得的。这样,组件的用户可以使用他们认为更方便的任何一个。显然,我必须将它们分成两个非常独立的命名空间以避免类命名冲突,但我认为拥有 Company.Tech.Database.DBContext 命名空间和 Company.Tech.Database.ObjectContext 应该没问题。
有人认为这是一个坏主意吗?好主意?我的理解是,虽然 DbContext 较新,但它不一定比 ObjectContext “更好”,它只是提供了一个不同的 API,可能被认为更简单,但这不取决于用例吗?在这种情况下,提供两个 API 不是一件好事吗?