使用ABP Core,我始终与最新的NUGET软件包保持同步。 我忘记的是创建迁移。当我意识到我的上一个EF快照来自ABP3.5.0时,我才移至ABP4.2.0。
我创建了一个新迁移,并显示以下警告:
脚手架操作可能会导致数据丢失。 请检查迁移的准确性。
然后我尝试更新数据库。结果我得到了这个异常:
System.Data.SqlClient.SqlException(0x80131904):找不到 对象“ AbpEntityChangeSets”,因为它不存在或您不存在 有权限。在 System.Data.SqlClient.SqlConnection.OnError(SqlException异常, 布尔值breakConnection,动作
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, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1 完成,布尔值sendToPipe,Int32超时,布尔值asyncWrite, 字符串methodName)位于 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()在 Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection 连接,DbCommandMethod executeMethod,IReadOnlyDictionary2 parameterValues) at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary
2个parameterValues)位于 Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands,IRelationalConnection连接)在 Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(字符串 targetMigration) Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration,字符串contextType)位于 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作 动作)
有趣的是,从2018年4月开始,快照中已经定义了实体“ AbpEntityChangeSets”。但是在数据库中永远找不到该实体。
非常感谢帮助!非常感谢。
答案 0 :(得分:0)
好像以前的ABP数据库迁移已被手动编辑
因此,我们使用v4.2.0创建了一个新的ABP模板,并重新使用了它的db-migrations。