【问题标题】:keeping database in sync ef core保持数据库同步 ef core
【发布时间】:2018-06-07 12:41:17
【问题描述】:

我已经阅读了多篇关于此的帖子,但还没有一个明确的答案。 我们正在全公司范围内过渡到 EF Core 2.0,一次一个项目。

挑战是这样的:

  1. 一个新项目启动,并使用代码优先、迁移等创建数据库。
  2. 另一个程序员需要创建一个针对同一数据库的项目。
  3. 此程序员可以使用 Scaffold-DbContext 并生成当前模型。
  4. 但是,需要一个新列,第二个程序员添加了它。

现在...我们如何最好地更新其他项目? 是否有一些东西可以检查和同步或显示模型和数据库之间不同步的内容?意思是检查数据库的变化......不是模型。

如果这是最好的解决方案,我们不介意购买工具。

【问题讨论】:

  • 你可以制作一个工具来运行Add-Migration 命令并检查它是否生成非空迁移。如果它生成空迁移,则意味着模型没有变化
  • 我认为,如果其他人更改了数据库,这不会发生,不是吗?
  • 所以无论谁在更改数据库,他/她也负责在模型中生成更改,否则您必须运行Scaffold-DbContext。我的建议是不要将代码优先和数据库优先方法混合在一起。如果有必要,然后管理多个数据库
  • 这不是一个选项。我们有一个首先使用代码创建的数据库。然后另一个项目需要以该数据库为目标。我的问题有两个:首先,那个人应该手动复制模型吗?其次,无论模型如何到达那里,我们现在都有两个项目使用相同的数据库,并且一个或多个项目将需要进行更改。其他团队如何处理这个问题?
  • 没明白你的意思,能不能说的更清楚一点

标签: entity-framework-core entity-framework-core-migrations


【解决方案1】:

我们一直在使用的解决方案,非常成功的是Visual Studio中的Database项目。

由于每个开发人员的解决方案中都有项目,因此可以在本地对其进行更改。 然后我们可以在 VS 内部进行“架构比较”。

在过去的三周里,我们 4 人一直在成功地使用它,几乎没有任何问题。

这甚至可以使我们的存储过程的版本和更改保持最新。 它也适用于 VSTS。

以下是我阅读的一些有助于我理解它的帖子:

https://www.sqlchick.com/entries/2016/1/10/why-you-should-use-a-ssdt-database-project-for-your-data-warehouse

https://weblogs.asp.net/gunnarpeipman/using-visual-studio-database-projects-in-real-life

..这个论坛有很多相关的问题/答案: https://social.msdn.microsoft.com/Forums/sqlserver/en-us/home?forum=ssdt

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 2014-03-21
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    相关资源
    最近更新 更多