【发布时间】:2020-02-03 23:35:55
【问题描述】:
我有一个奇怪的问题,我找不到解决办法。
堆栈是:NET Core 2、EF、PostgreSQL。
我使用 .NET Core Identity 和 User : IdentityUser 来扩展基本用户模型和附加字段。
创建第一个迁移后,删除整个数据库并尝试dotnet ef database update 我总是收到错误:42P07: relation "AspNetRoles" already exists
即使出现此错误,也会创建数据库和表,但它会使迁移变得无用,因为它不保存已应用的迁移,因此我无法使用以下更改更新数据库...
失败:Microsoft.EntityFrameworkCore.Database.Command[200102] 执行 DbCommand 失败 (0ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] 创建表“AspNetRoles”( “Id”文本不为空, "ConcurrencyStamp" 文本 NULL, “名称” varchar(256) NULL, "NormalizedName" varchar(256) NULL, 约束“PK_AspNetRoles”主键(“Id”) ); Npgsql.PostgresException (0x80004005): 42P07: 关系“AspNetRoles”已经存在于 Npgsql.NpgsqlConnector.d__148.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter
1.GetResult() at System.Runtime.CompilerServices.ValueTaskAwaiter1.GetResult()
在 Npgsql.NpgsqlConnector.d__147.MoveNext()
【问题讨论】:
-
迁移创建后您是否更改了一些内容?该操作可能会触发类似的错误
-
没有。没有什么。我已经尝试过多次删除迁移并再次创建它们。
标签: c# postgresql entity-framework asp.net-core