在ASP.NET Core 3.1中扩展IdentityUser之后,如何解决EF Core数据库错误?

网芯开发者

我还使用Entity Framework Core 3.1在ASP.NET Core 3.1中构建了一个Web应用程序,现在正尝试将其发布到Azure。但是,在开发阶段,当我使用自定义ApplicationUser类扩展了内置IdentityUser类时,我的EF迁移就停止了向数据库的发布。迁移已成功创建,但是update-database命令始终失败。

因为我无法理解错误消息,所以我只是根据每个后续迁移文件中包含的信息来手动更新数据库表。在仍处于开发状态时,这种方法仍然可以正常工作,但是现在我想将应用程序发布到Azure,同样的错误使该应用程序根本无法在Azure上托管。

基本上,当Azure尝试创建数据库时,在开发过程中遇到的完全相同的错误会阻止数据库的成功创建。而且由于我在开发过程中使用了手动解决方法,所以我不知道现在尝试将应用程序发布到Azure时如何解决错误。

以下是尝试发布到Azure时收到的错误消息:

System.AggregateException:发生一个或多个错误。---> System.Exception:构建失败。检查“输出”窗口以获取更多详细信息。---内部异常堆栈跟踪的结尾---在System.Threading.Tasks.Task.Task.Wait(Int32毫秒超时,CancellationToken cancelleToken)在System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)在Microsoft.WebTools.Publish。 PublishService.VsWebProjectPublish。<> c.DisplayClass43_0.b__3()在System.Threading.Tasks.Task`1.InnerInvoke()在System.Threading.Tasks.Task.Execute()-从上次发生异常的位置开始的堆栈跟踪结束在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)-在Microsoft.Publish.Framework.ViewModel上抛出。ProfileSelectorViewModel.d__213.MoveNext()--->(内部异常#0)System.Exception:构建失败。检查输出窗口以获取更多详细信息。

System.Exception:构建失败。检查“输出”窗口以获取更多详细信息。

===================

严重性代码说明项目文件行抑制状态错误Web部署任务失败。(在执行数据库脚本的过程中发生了错误。该脚本的以下各行之间发生了错误:“ 568”和“ 581”。详细的日志可能包含有关该错误的更多信息。该命令以以下内容开头:不存在(SELECT * FROM [__EFMigrationsHisto“对象'PK_AspNetUserTokens'取决于列'Name'。ALTER TABLE ALTER COLUMN名称失败,因为一个或多个对象访问此列。http: //go.microsoft.com/fwlink/? LinkId = 178587了解更多信息:http : //go.microsoft.com/fwlink/? LinkId=221672#ERROR_SQL_EXECUTION_FAILURE。)无法发布数据库。如果远程数据库无法运行脚本,则会发生这种情况。尝试修改数据库脚本,或在“打包/发布Web属性”页面中禁用数据库发布。如果脚本由于数据库表已经存在而失败,请尝试在创建新数据库对象之前删除现有数据库对象。有关在Visual Studio中执行这些选项的更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=179181错误详细信息:在执行数据库脚本期间发生错误。该脚本的以下各行之间发生了错误:“ 568”和“ 581”。详细日志可能包含有关该错误的更多信息。该命令以以下内容开头:“ IF NOT EXISTS(SELECT * FROM [__EFMigrationsHisto”“)对象'PK_AspNetUserTokens'取决于列'Name'。ALTER TABLE ALTER COLUMN名称失败,因为一个或多个对象访问此列。http:// go.microsoft.com/fwlink/?LinkId=178587了解更多信息:http : //go.microsoft.com/fwlink/?LinkId= 221672#ERROR_SQL_EXECUTION_FAILURE对象“ PK_AspNetUserTokens”取决于列“名称”。ALTER TABLE ALTER COLUMN名称失败,因为一个或多个对象访问此列。在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔值breakConnection,操作1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, ActionSystem.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReadS数据状态,BulkStateCopySimpleState,ObjectDataCopyS,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,ObjectState,对象状态,对象状态,状态集在System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1完成时,String methodName,布尔methodName,布尔sendToPipe,Int32超时, Microsoft.Web.Deployment.DBStatementInfo.Execute(DbConnection连接)处System.Data.SqlClient.SqlCommand.ExecuteNonQuery()处的Boolean&usedCache,Boolean asyncWrite,Boolean inRetry),DbTransaction事务,DeploymentBaseContext baseContext,Int32超时)BethanysPieShop 0

以下是在开发过程中在程序包管理器控制台中运行update-database命令时遇到的相关错误:

fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (1,684ms) [Parameters=[], CommandType='Text', CommandTimeout='120']
      DECLARE @var2 sysname;
      SELECT @var2 = [d].[name]
      FROM [sys].[default_constraints] [d]
      INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
      WHERE ([d].[parent_object_id] = OBJECT_ID(N'[AspNetUserTokens]') AND [c].[name] = N'Name');
      IF @var2 IS NOT NULL EXEC(N'ALTER TABLE [AspNetUserTokens] DROP CONSTRAINT [' + @var2 + '];');
      ALTER TABLE [AspNetUserTokens] ALTER COLUMN [Name] nvarchar(128) NOT NULL;
Failed executing DbCommand (1,684ms) [Parameters=[], CommandType='Text', CommandTimeout='120']
DECLARE @var2 sysname;
SELECT @var2 = [d].[name]
FROM [sys].[default_constraints] [d]
INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
WHERE ([d].[parent_object_id] = OBJECT_ID(N'[AspNetUserTokens]') AND [c].[name] = N'Name');
IF @var2 IS NOT NULL EXEC(N'ALTER TABLE [AspNetUserTokens] DROP CONSTRAINT [' + @var2 + '];');
ALTER TABLE [AspNetUserTokens] ALTER COLUMN [Name] nvarchar(128) NOT NULL;
Microsoft.Data.SqlClient.SqlException (0x80131904): The object 'PK_AspNetUserTokens' is dependent on column 'Name'.
ALTER TABLE ALTER COLUMN Name failed because one or more objects access this column.
   at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at Microsoft.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean isAsync, Int32 timeout, Boolean asyncWrite)
   at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName)
   at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteNonQuery(RelationalCommandParameterObject parameterObject)
   at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
   at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection)
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
ClientConnectionId:a2c8216d-8ba5-413c-8ab8-1526fdb7a7e7
Error Number:5074,State:1,Class:16
The object 'PK_AspNetUserTokens' is dependent on column 'Name'.
ALTER TABLE ALTER COLUMN Name failed because one or more objects access this column.
MR会议

我认为在这种情况下,您最好做的是,因为还没有任何实际数据可使用,因此,如果在所需位置设置了所有内容,则可以删除迁移,清除数据库,然后启动数据库。从头开始迁移和数据库。

我知道这不是理想的处理方式,但是我认为从开始迁移和更新数据库开始,然后转向使用迁移脚本手动更新数据库,这将非常困难并且几乎不可能它返回到您需要的地方。

进行新的迁移后,您所有的表都应正确设置而不会出错。

资料来源:我做的和您做的完全一样,现在我非常小心如何处理迁移并确保正确应用它们,而且没有其他问题了。

如果您正在使用迁移和更新数据库,请坚持这样做,我不会使用脚本手动进行

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Azure上发布数据库优先EF和ASP.NET Core 3 Web API,连接字符串错误

来自分类Dev

如何在ASP.NET Core 3中从具有全文本索引的数据库中检索产品

来自分类Dev

Linux上的ASP.NET Core-dotnet ef数据库更新失败并出现版本错误

来自分类Dev

Asp.Net Core 3.1数据已检索但未保存到数据库中

来自分类Dev

使用Blazor在ASP.NET CORE中更新数据库后如何刷新网页

来自分类Dev

如何基于特定值查询数据库中的列MVC ASP.NET Core

来自分类Dev

如何从 Angular 数据库中的 ASP.NET Core API 下载并保存 pdf 文件?

来自分类Dev

ASP.NET Core 1 RC2-数据库架构

来自分类Dev

ASP.NET Core 1 RC2-数据库架构

来自分类Dev

ASP.Net Core 和 AngularJS:如何根据数据库记录动态路由/内容?

来自分类Dev

如何设置与数据库的连接 - Azure 上托管的 ASP.NET Core

来自分类Dev

登录到ASP.NET Core MVC 6中的数据库

来自分类Dev

ASP.Net Core Web API中的数据库查询过滤

来自分类Dev

在ASP.NET Core中启动期间可以访问数据库吗?

来自分类Dev

在ASP.NET Core MVC中通过控制器从数据库读取信息

来自分类Dev

在Xunit集成测试中检索ASP.NET Core 3.1数据库上下文

来自分类Dev

ASP.Net Core-在SQL Server数据库中存储和检索FormCollection

来自分类Dev

ASP.Net Core Web API中的数据库查询过滤

来自分类Dev

从ASP.NET Core MVC中的SQL数据库访问用户ICollection

来自分类Dev

asp.net core Api - 在数据库中插入新行

来自分类Dev

在asp net core实体框架mvc中从数据库绑定菜单和子菜单

来自分类Dev

Asp.NET Core 中的关系数据库 SQL 查询

来自分类Dev

数据库的ASP.NET Core ILoggerProvider

来自分类Dev

从外部数据库登录 ASP.NET Core 2.2

来自分类Dev

ASP.NET Core 3.1和Entity Framework Core会根据ID从数据库中删除多个记录

来自分类Dev

将多个数据库表中的数据检索到ASP.NET Core中的API

来自分类Dev

使用ASP.NET CORE从选项菜单向数据库中插入数据时出现问题

来自分类Dev

如何从ASP.NET Core中的实体框架中的数据库更新VS 2019中的模型

来自分类Dev

如何解决HTTP错误403.14-Asp.Net Core API中禁止的错误?

Related 相关文章

  1. 1

    在Azure上发布数据库优先EF和ASP.NET Core 3 Web API,连接字符串错误

  2. 2

    如何在ASP.NET Core 3中从具有全文本索引的数据库中检索产品

  3. 3

    Linux上的ASP.NET Core-dotnet ef数据库更新失败并出现版本错误

  4. 4

    Asp.Net Core 3.1数据已检索但未保存到数据库中

  5. 5

    使用Blazor在ASP.NET CORE中更新数据库后如何刷新网页

  6. 6

    如何基于特定值查询数据库中的列MVC ASP.NET Core

  7. 7

    如何从 Angular 数据库中的 ASP.NET Core API 下载并保存 pdf 文件?

  8. 8

    ASP.NET Core 1 RC2-数据库架构

  9. 9

    ASP.NET Core 1 RC2-数据库架构

  10. 10

    ASP.Net Core 和 AngularJS:如何根据数据库记录动态路由/内容?

  11. 11

    如何设置与数据库的连接 - Azure 上托管的 ASP.NET Core

  12. 12

    登录到ASP.NET Core MVC 6中的数据库

  13. 13

    ASP.Net Core Web API中的数据库查询过滤

  14. 14

    在ASP.NET Core中启动期间可以访问数据库吗?

  15. 15

    在ASP.NET Core MVC中通过控制器从数据库读取信息

  16. 16

    在Xunit集成测试中检索ASP.NET Core 3.1数据库上下文

  17. 17

    ASP.Net Core-在SQL Server数据库中存储和检索FormCollection

  18. 18

    ASP.Net Core Web API中的数据库查询过滤

  19. 19

    从ASP.NET Core MVC中的SQL数据库访问用户ICollection

  20. 20

    asp.net core Api - 在数据库中插入新行

  21. 21

    在asp net core实体框架mvc中从数据库绑定菜单和子菜单

  22. 22

    Asp.NET Core 中的关系数据库 SQL 查询

  23. 23

    数据库的ASP.NET Core ILoggerProvider

  24. 24

    从外部数据库登录 ASP.NET Core 2.2

  25. 25

    ASP.NET Core 3.1和Entity Framework Core会根据ID从数据库中删除多个记录

  26. 26

    将多个数据库表中的数据检索到ASP.NET Core中的API

  27. 27

    使用ASP.NET CORE从选项菜单向数据库中插入数据时出现问题

  28. 28

    如何从ASP.NET Core中的实体框架中的数据库更新VS 2019中的模型

  29. 29

    如何解决HTTP错误403.14-Asp.Net Core API中禁止的错误?

热门标签

归档