加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

实体框架 – 更新到EF 6.0.0-alpha后,无法使用EF迁移更新数据库

发布时间:2020-12-12 08:30:24 所属栏目:MsSql教程 来源:网络整理
导读:将我的实体框架更新为6.0.0-alpha1后,我无法更新数据库. 这是我得到的错误: PM update-database -verboseUsing StartUp project 'DataCenter'.Using NuGet project 'DataCenter.Domain'.Specify the '-Verbose' flag to view the SQL statements being appli
将我的实体框架更新为6.0.0-alpha1后,我无法更新数据库.
这是我得到的错误:
PM> update-database -verbose
Using StartUp project 'DataCenter'.
Using NuGet project 'DataCenter.Domain'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'datacenter' (DataSource: .,Provider: System.Data.SqlClient,Origin: Configuration).
Upgrading history table.
ALTER TABLE [dbo].[__MigrationHistory] ADD [ContextKey] [nvarchar](512) NOT NULL DEFAULT 'DataCenter.Domain.Migrations.Configuration'
ALTER TABLE [dbo].[__MigrationHistory] DROP CONSTRAINT [PK_dbo.__MigrationHistory]
System.Data.SqlClient.SqlException (0x80131904): 'PK_dbo.__MigrationHistory' is not a constraint.
Could not drop constraint. See previous errors.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,Boolean breakConnection,Action`1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName,Boolean async,Int32 timeout)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion,String methodName,Boolean sendToPipe,Int32 timeout,Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction,MigrationStatement migrationStatement)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction,MigrationStatement migrationStatement)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
   at System.Data.Entity.Migrations.DbMigrator.UpgradeHistory(IEnumerable`1 upgradeOperations)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.UpgradeHistory(IEnumerable`1 upgradeOperations)
   at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration)
   at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
ClientConnectionId:eda1a366-d3c8-44de-8cc9-8f64e2511b4e
'PK_dbo.__MigrationHistory' is not a constraint.
Could not drop constraint. See previous errors.

这是什么原因?我查询了“PK_dbo .__ MigrationHistory”的sysobjects表,但不存在.
任何想法?

提前致谢.

解决方法

好.我找到了解决方案.
看来,EF希望__MigrationHistory表的主键约束具有名称PK_dbo .__MigrationHistory.但它是PK___MigrationHistory.

所以下面的sql语句将会做到这一点.

ALTER TABLE __MigrationHistory
drop CONSTRAINT PK___MigrationHistory
ALTER TABLE __MigrationHistory
ADD CONSTRAINT [PK_dbo.__MigrationHistory] PRIMARY KEY (MigrationId)

之后我已经使用update-database没有错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读