实体框架迁移错误

use*_*767 5 c# sql-server asp.net entity-framework

我向现有的 SQL Server 数据库添加了一个新表。我使用它生成的 id 作为密钥。我运行了dotnet ef migration add NewTable,运行没有错误。我查看了迁移文件,这是为我的新表添加的内容:

migrationBuilder.CreateTable(
                name: "InboxNotifications",
                columns: table => new
                {
                    Id = table.Column<string>(type: "nvarchar(450)", nullable: false),
                    Created = table.Column<DateTime>(type: "datetime2", nullable: false),
                    CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    DataId = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    EventIdent = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    Message = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    Status = table.Column<int>(type: "int", nullable: false),
                    TeamIdent = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    Title = table.Column<string>(type: "nvarchar(max)", nullable: true),
                    Type = table.Column<int>(type: "int", nullable: false),
                    UserId = table.Column<string>(type: "nvarchar(max)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_InboxNotifications", x => x.Id);
                });
Run Code Online (Sandbox Code Playgroud)

现在,当我运行时dotnet ef database update,我收到此错误:

失败:Microsoft.EntityFrameworkCore.Database.Command[200102]
执行 DbCommand 失败 (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
ALTER TABLE [ApplicationUserToken] DROP CONSTRAINT [FK_ApplicationUserToken_AspNetUsers_UserId];
System.Data.SqlClient.SqlException(0x80131904):找不到对象“ApplicationUserToken”,因为它不存在或您没有权限。

在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection,操作1wrapCloseInAction) 在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔callerHasConnectionLock,布尔asyncClose) 在System.Data.SqlClient.TdsParser。 TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSetbulkCopyHandler,TdsParserStateObject stateObj,Boolean&dataReady) 在System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串方法名称,布尔异步,Int32超时,布尔asyncWrite) 在System.Data.SqlClient 。 SqlCommand.InternalExecuteNonQuery(TaskCompletionSource 2 参数值)1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action




1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary

我不太确定这意味着什么,因为我没有更改数据库上下文文件中的任何其他内容。我只添加了新模型。

编辑:

所以我在startup.cs中调用了这个函数Configure()

`

public virtual void EnsureDatabaseCreated(TennisFolderContext dbContext,
                              UserManager<ApplicationUser> userManager,
                              RoleManager<ApplicationRole> roleManager,
                              bool createData)
        {

            // run Migrations
            DbInitializer.Initialize(dbContext, userManager, roleManager, createData).Wait();
        }
Run Code Online (Sandbox Code Playgroud)

`

根据https://learn.microsoft.com/en-us/aspnet/core/migration/1x-to-2x/

将其移至program.cs 并没有修复它。似乎无法弄清楚发生了什么事。

小智 3

给定的代码并不表明 ApplicationUserToken 发生任何更改。因此,请确保您连接到同一个数据库(验证您的上下文文件)。检查您是否已调用初始化 DBContext。