数据库中已经有一个名为"__MigrationHistory"的对象

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架构的虚拟类创建空迁移,并首先运行该迁移以生成相关表.然后使用不同的模式运行用于迁移的脚本,它应该可以工作.


que*_*atl 4

__MigrationHistory是 EF 使用的自动生成的表,用于跟踪它已应用于数据库的升级/补丁。EF 完全了解该表并自行处理它。您不应该创建/删除/更改该表。看来您的数据库已经有该表了。如果 EF 或您的升级脚本尝试创建这样的表,这很奇怪。您需要仔细检查所有内容并猜测/了解到底发生了什么,因为要么 EF 变得疯狂,要么您的脚本以错误的方式准备。


归档时间:

查看次数:

15414 次

最近记录:

8 年,2 月 前