Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 将实体框架与现有数据库和空开发数据库一起使用时的迁移_.net_Entity Framework_Entity Framework Migrations - Fatal编程技术网

.net 将实体框架与现有数据库和空开发数据库一起使用时的迁移

.net 将实体框架与现有数据库和空开发数据库一起使用时的迁移,.net,entity-framework,entity-framework-migrations,.net,Entity Framework,Entity Framework Migrations,我们有一些现有的应用程序,我们正在将实体框架改装为ORM 我们的目标是在迁移中首先使用代码(来自现有数据库),但我们在使迁移适应现有数据库场景方面遇到了问题: 已具有与代码匹配的所有表的测试/生产数据库。但是没有迁移表 本地主机开发数据库为空 目标 开发人员可以运行单元测试项目,数据库将与所有表一起创建自己 可以从迁移生成脚本,该脚本将负责生成_migrationsHistory表以及生产所需的所有更改 使用包管理器,可以使用默认迁移初始值设定项求解1。或使用忽略更改开关求解2。但如果两者同

我们有一些现有的应用程序,我们正在将实体框架改装为ORM

我们的目标是在迁移中首先使用代码(来自现有数据库),但我们在使迁移适应现有数据库场景方面遇到了问题:

  • 已具有与代码匹配的所有表的测试/生产数据库。但是没有迁移表
  • 本地主机开发数据库为空
目标

  • 开发人员可以运行单元测试项目,数据库将与所有表一起创建自己
  • 可以从迁移生成脚本,该脚本将负责生成_migrationsHistory表以及生产所需的所有更改 使用包管理器,可以使用默认迁移初始值设定项求解1。或使用忽略更改开关求解2。但如果两者同时工作,则不会成功

    我试过:

    • 添加迁移初始化创建;添加迁移历史记录表-忽略更改
      开发人员可以这样做:更新数据库
      进入测试/生产时,可以使用updatedatabase-script-SourceMigration:$InitialDatabase生成脚本。问题是脚本将发现initialCreate迁移丢失,并尝试重新添加现有表。如果缺少迁移历史记录表(位于test/prod中),则从MigrationHistoryTable进行的源迁移不会添加迁移历史记录表
    • 另一个尝试是有两个迁移项目,一个用于单元测试,另一个用于数据库。但这变得有点混乱
    还有其他建议吗

    Thx
    Kim

    您可以先使用实体框架工具将现有数据库反向工程为代码。在没有数据库的开发机器上执行

    add-migration Initial
    

    你们将有模型匹配的产品。编写uu MigrationHistory表和所有行的脚本,并将它们添加到生产数据库中。然后,您的生产数据库将为将来从迁移生成的脚本做好准备

    命令

     update-database -script -SourceMigration $InitialDatabase
    

    将生成用于将数据库更新到最新版本的完整脚本。它检查uu MigrationHistory表,并逐行应用架构更改,使模型与每次迁移中的更改相匹配

    嗨,Miniver,我正在寻找一种解决方案,在这种情况下,EF可以在不需要手动脚本(或从DB自动生成)的情况下提供帮助。如果没有更好的建议,我会将此标记为解决方案。Thx KimEntity Framework迁移功能都与_MigrationHistory表相关联。另一种方法可能是对数据库进行反向工程,并在本地使用实体框架迁移,然后在中使用架构比较工具,或者如果我不了解_umigrationhistory表投入生产后,您可以将连接字符串更改为指向生产,然后执行update-database.Hi Miniver,看来你提出的第一个解决方案就是我们将采用的方案。没问题,很高兴我能帮忙。
     update-database -script -SourceMigration $InitialDatabase