每个数据库上下文应该在自己的Visual Studio项目中吗?

时间:2012-08-07 19:27:27

标签: ef-code-first ef-migrations

我有一个名为MyApp.DataAccess的项目,它包含多个数据库上下文。这开始是一个上下文,并已增长到三个(我的应用程序所需的所有单独的数据库)。你可以想象我也有每个初始化程序类,我现在也尝试使用迁移。我可以看到这会使我的MyApp.DataAccess项目变得非常混乱。

我还有一个名为MyApp.Model的项目,它包含模型类,这些模型类通常按照每个上述Context中的用途组织在文件夹中。

我正在努力学习如何最好地组织多个DbContexts和Model类。

我的直觉告诉我选项1,但最佳做法是什么?

  1. 为每个DbContext创建一个MyApp.DataAccess。[ContextName]项目,该项目包含DbContext,迁移和相关的Model类。最终,我仍然需要一个MyApp.Model项目来表示非数据库模型类。

  2. 为每个DbContext创建一个MyApp.DataAccess。[ContextName]项目,该项目仅包含DbContext和Migrations;继续为所有模型类使用MyApp.Model(在文件夹和子命名空间中组织)。

  3. 什么都不做 - 一个包含多个DbContexts,多次迁移等的MyApp.DataAccess;一个MyApp.Model,包含按文件夹组织的多个数据库的模型。

  4. 最佳做法/理想方法是什么?

1 个答案:

答案 0 :(得分:1)

你的问题应该从“为什么我应该有不同的DbContexts”开始。在大多数情况下,不同的上下文意味着不同的数据模型,不同的 - 不相关的 - 责任,因此应该尽可能地分开。这意味着不同的组件都会出现。