MVC维护两种不同的模型

时间:2014-02-10 07:33:38

标签: asp.net-mvc entity-framework

我们在MVC中有一个项目,我们已经完成了第一阶段的开发

现在对于Phase2,我们的数据库更改和模型edmx文件将根据开发

进行更改

此外,对于阶段I

,将同时修复错误和更改

那么,我如何在Production Server和Development Server中维护我的edmx文件

2 个答案:

答案 0 :(得分:3)

  

生产服务器和开发服务器中的edmx文件

您需要使用某种版本控制机制(如TFS),并且通过适当的分支和合并,您可以管理开发和生产版本 - Read this article on TFS Branching。或者你也有Git和其他许多人。

此外,您还必须规划生产版和开发版之间的数据库版本迁移。因为EF有Migration techniques,你可以使用它。

答案 1 :(得分:1)

您有几个选择需要考虑。首先,作为任何其他变化的先驱,请像@ramiramilu一样说并将您的代码置于源代码管理之下。

在此之后,您将遇到如何处理作为更改的一部分引入的数据库架构更改的问题。以下是您可以采取的一些路线:

  1. 转换为代码优先开发,以便您可以使用数据库迁移。我在模型优先和代码优先模式中都使用了Entity Framework。我的经验是,减少数据库迁移功能的麻烦远远超过了在代码和数据库之间建立映射的可视化模型所带来的任何好处。如果需要,还可以使用工具从代码中反转生成模型。
  2. 保持模型第一种方法,您可以查看生成SQL更新脚本,这些脚本在部署之间提供数据库增量。然后将这些添加到具有某种命名约定的文件夹中以指示它们应该应用的顺序(例如yyyymmdd-descripion.sql)。生成增量的一种方法是使用Visual Studio中的Schema Compare工具。您可以选择将数据库的当前开发版本保留为解决方案中的数据库项目,尽管此类数据库项目与将从模型生成的数据库之间存在不一致的危险。
  3. 再次坚持模型第一种方法,您可以在部署时使用例如SQLPackage.exe生成增量SQL脚本。这样做的好处是您不需要维护一组delta脚本并处理知道特定数据库所在的增量集的版本的问题。缺点是如果delta脚本在运行之前需要进行一些修改(就像在有大量数据或设置了一些异常模式的情况下那样),整个部署时间就会变长。
  4. 总的来说,我真的建议您查看选项1,即代码优先开发选项。