Ami*_*rzi 4 c# entity-framework database-migration nuget asp.net-mvc-5
当我尝试在远程数据库上执行SQLQuery(由Update-Database -Verbose -f -ScriptVisual Studio中的本地生成)时,我看到SQL Server Management Studio返回以下错误:
Msg 2714,Level 16,State 6,Line 1
数据库中已经有一个名为"__MigrationHistory"的对象.
怎么解决这个?
小智 5
就一个问题.您使用的是除dbo之外的其他架构吗?
我认为它是EF框架中的一个错误,它在检查架构时不检查架构,以检查__MigrationHistory表是否存在.
我能够通过使用dbo模式创建一个Dummy __MigrationHistory表来解决这个问题,这欺骗了EF6生成器"创建表"
CREATE TABLE [dbo].[__MigrationHistory] (
[MigrationId] [nvarchar](150) NOT NULL,
[ContextKey] [nvarchar](300) NOT NULL,
[Model] [varbinary](max) NOT NULL,
[ProductVersion] [nvarchar](32) NOT NULL,
CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY ([MigrationId], [ContextKey])
)
如果要自动化它,则必须使用使用dbo架构的虚拟类创建空迁移,并首先运行该迁移以生成相关表.然后使用不同的模式运行用于迁移的脚本,它应该可以工作.
__MigrationHistory是 EF 使用的自动生成的表,用于跟踪它已应用于数据库的升级/补丁。EF 完全了解该表并自行处理它。您不应该创建/删除/更改该表。看来您的数据库已经有该表了。如果 EF 或您的升级脚本尝试创建这样的表,这很奇怪。您需要仔细检查所有内容并猜测/了解到底发生了什么,因为要么 EF 变得疯狂,要么您的脚本以错误的方式准备。
| 归档时间: |
|
| 查看次数: |
15414 次 |
| 最近记录: |