我的DEV PC上有prod数据库和代码的副本。
在生产中,我在系统表中看到_MigrationHistory中存在8个迁移记录。 (代码和部署的第一个版本是由另一个人编写的)。
我需要添加一些新表和代码来与它们一起工作 - 模型和控制器。我可以为新表和控制器代码添加新模型。
在DEV PC上我可以启动命令
add-migration myNewMigration
和
update-database with option" -script"
并且没有它来获取我的DEV DB和脚本中的表以在Production上执行。
对于部署,我需要复制关于Prod的bin文件夹和新视图的内容,并运行SQL脚本以在DB中创建新表。
我想知道这已经足够了,因为目前我在DEV环境中看到所有迁移的记录,系统表中的生产环境中的相应记录 - _MigrationHistory。
如果我只在PROD上运行SQL脚本,则此操作的新记录将不会出现在_MigrationHistory中。因此,这可能是导致模型不同并且在部署后出现任何问题的错误的原因。
答案 0 :(得分:0)
在更改生产数据库之前,请确保您有完整的备份。
我很想知道这已经足够了,因为目前我在Dev环境中看到所有迁移的记录,系统表中生产环境中的相应记录 - _MigrationHistory
如果您在开发环境中运行代码,它将应用您的显式迁移。
如果我正确理解您的评论,您会在DEV和PROD中看到相同的迁移。如果这是准确的,那么PROD可能是最新的。
查看项目中的Migrations文件夹。在那里,您将看到一个完整的迁移列表,每个迁移都在自己的.cs文件中(加上相关的.Designer.cs和.resx文件)。将您在此处看到的内容与DEV和PROD中__MigrationHistory中的迁移列表进行比较,以了解完整的迁移集以及它们的应用位置。
如果我只在Prod上运行sql脚本,那么此操作的新记录将不会出现在_MigrationHistory
查看您的迁移脚本。它们将相应的条目插入到运行它们的__MigrationHistory中(包括在生产中)。这是我的一个项目的编辑示例:
INSERT [dbo]。[__ MigrationHistory]([MigrationId],[ContextKey],[Model],[ProductVersion]) 价值观(N' 201409082209285_VDisposer',N' Survey.Model.Migrations.MembershipConfiguration.MembershipConfiguration',0x1F8B0800000 ... 1A0200,N' 6.1.1-30610')
因此可能是获得错误的原因,即模型不同并且在部署之后出现任何问题
如果您遇到模型与数据库不匹配的错误,还有另一个原因。
我建议缩小差异:
请记住在完成后撤消对web.config的更改。