我正在使用.NET核心6和EF核心6与一个现有的数据库。我们不得不对这个数据库做一些修改,所以我们引入了EF 6迁移。为了使它与初始数据库一起工作,我们必须创建一个空的初始创建。因此,当我们运行迁移脚本时,会添加新的列。
问题是:如何在本地机器上创建用于开发目的的初始数据库?
如果我用这种方法
var databaseCreator = (RelationalDatabaseCreator)dbContext.Database.GetService<IDatabaseCreator>();
await databaseCreator.CreateTablesAsync(cancellationToken);表是创建的,但是没有迁移历史,因此后续迁移将失败。
如果我只是运行迁移
await context.Database.MigrateAsync(cancellationToken);由于初始迁移是空的,所以不会创建这些表。
用迁移历史记录插入一个空数据库的正确方法是什么?
发布于 2022-01-28 10:54:59
我自己解决这个问题的方法是根据当前模型(不是一个空迁移)生成一个完整的初始迁移,就像数据库还不存在一样。然后在一个新的本地数据库上调用MigrateAsync。这将将迁移插入到本地__MigrationHistory表中。然后将本地__MigrationHistory表中的该行插入到生产数据库的__MigrationHistory表中。
现在,您的生产数据库将跳过初始迁移,但是如果您需要它用于另一个数据库,则可以从头构建它。
https://stackoverflow.com/questions/70891561
复制相似问题