我正在尝试使用Entity Framework和Code First Migrations在开发服务器上更新我的数据库(它在本地计算机上运行良好)。我使用命令update-database -Script -SourceMigration:201305161422570_AddedWidgets
生成必要的脚本。当我在服务器上的SQL Management Studio(2008R2)中运行此脚本时,每次脚本尝试写入__MigrationHistory表时都会收到错误。确切的错误是:
Cannot insert the value NULL into column 'CreatedOn', table 'master.dbo.__MigrationHistory'; column does not allow nulls. INSERT fails.
之前我从未遇到过这个错误,但我发现它很奇怪,因为我的__MigrationHistory表没有列CreatedOn
,也没有尝试将任何内容放入名为该列的列中。这是我的一个插入语句:
INSERT INTO [__MigrationHistory] ([MigrationId], [Model], [ProductVersion]) VALUES ('201306031825584_AddedTitleToSocialLevel', 0x1F8B0800000000000400EDBDDD92...0, '5.0.0.net45')
我不确定从哪里开始,有人有任何建议吗?
答案 0 :(得分:1)
错误肯定是抱怨在数据库“master”中有一个表“__MigrationHistory”肯定有一个不可为空的列“CreatedOn”,在插入该行时没有设置。您应该仔细检查开发服务器的数据库的模式。
答案 1 :(得分:0)
回顾wagregg的错误和建议,我意识到生成的脚本在master.dbo.MigrationHistory
中寻找我的__MigrationHistory表,但实际上并不是这样。
我将每个引用从[__MigrationHistory]
更改为[EnterpriseWebDB].[dbo].[__MigrationHistory]
,并解决了问题。