entity-framework - 如何管理开发数据库和生产数据库之间的 EF 迁移?

标签 entity-framework ef-code-first database-migration entity-framework-migrations

在任何人将其标记为重复之前,与此类似的问题都没有解决我的任何疑虑或回答我的任何问题。

我目前正在一个库项目中开发所有 POCO 和数据上下文,并从该项目中运行迁移。我正在更新的数据库是开发数据库。

如果我想将当前架构创建到全新的数据库中,该怎么办?我认为我所要做的就是更改 web.config 中的连接字符串并运行 Update-Database,对吗?

当实时/生产数据库启动并运行时,我想向架构添加新列和新表,并在开发中对其进行测试。因此,我将连接字符串切换回开发数据库的连接字符串,然后运行 ​​Update-Database。

在两个数据库之间来回切换似乎会在 _MigrationHistory 表和自动生成的迁移脚本之间出现冲突。

手动删除两个数据库中的 _MigrationHistory 表和/或删除/Migrations 中的迁移文件(这样我将再次运行 Add-Migration)是否安全?我们如何处理这个问题?

最佳答案

如果我想将当前架构创建到全新的数据库中,该怎么办?
- 是的,要创建当前迁移级别的新数据库,您只需修改连接字符串以指向尚不存在的数据库并运行 update-database。它将按顺序运行所有迁移。

就迁移到生产数据库而言,我正在使用 -script 开关运行 update-database 命令来获取原始 sql,然后手动将该脚本应用到生产数据库。如果您还需要记录针对数据库运行的 sql 命令,这会很有帮助。此外,您可以通过其他一些更新数据库开关显式生成从特定迁移到另一个特定迁移的脚本。

或者,您可以使用
–SourceMigration $InitialDatabase 开关创建可在任何迁移中运行的幂等脚本,并可选择使用 –TargetMigration 指定结束迁移>

如果删除 _MigrationHistory 表,您将遇到问题,生成的脚本将尝试添加已存在的列等。

您可能会发现以下链接很有帮助:
Microsoft Entity Framework Migrations

关于entity-framework - 如何管理开发数据库和生产数据库之间的 EF 迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22019307/

相关文章:

c# - 在 EF Core 中自动填充 Created 和 LastModified

sql-server - SQL Server 中的 C# float 转实数

c# - EntityFramework 在 App.config 中看不到 ConnectionString

ruby-on-rails - Rails 4 数据库迁移错误 : undefined method `to_sym' for nil:NilClass

postgresql - 如何更改 SQL Server 而不是删除触发器到 PostgreSQL

mysql - 删除带有外键的行( Entity Framework )

c# - 如果主键设置为自动增量,如何使用 Entity Framework 进行检查?

c# - 如何在 Entity Framework 5/6 中实现部分更新?

c# - 在 ASP.NET Core 中通过代码优先在 SQL 中使用 FileStream

sql-server - 更改无 DSN Access 前端的 SQL 连接信息