名为“日期”的列和 EF Core 7 迁移

问题描述 投票:0回答:1

我们的实体具有以下属性:

public DateTime Date { get; init; }

然后我们将其重命名为:

public DateTime DateUTC { get; init; }

Up(MigrationBuilder migrationBuilder)
方法中,我们有:

migrationBuilder.RenameColumn(
  name: "Date",
  table: "VirtualAccountStatus",
  newName: "DateUTC");

迁移无法运行并出现以下异常:

应用迁移“20220422111129_Rename_VirtualAccountDateField”。执行 DbCommand 失败 (67ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] EXEC sp_rename N'[VirtualAccountStatus].[''Date'']', N'DateUTC', N'COLUMN' ; Microsoft.Data.SqlClient.SqlException(0x80131904):参数@objname不明确或声明的@objtype(COLUMN)错误。

at Microsoft.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) in /_/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlConnection.cs:line 2010
at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) in /_/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/SqlInternalConnection.cs:line 770
at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) in /_/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs:line 1421
at Microsoft.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) in /_/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs:line 2637
at Microsoft.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean isAsync, Int32 timeout, Boolean asyncWrite) in /_/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlCommand.cs:line 3502
at Microsoft.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry, String methodName) in /_/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlCommand.cs:line 1667
at Microsoft.Data.SqlClient.SqlCommand.ExecuteNonQuery() in /_/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SqlCommand.cs:line 1213

我认为这是因为 EF Core 7 不喜欢我们有一个名为

Date
的列(也许是保留关键字?)

我怎样才能克服这个问题,以便重命名该字段并使迁移满意?

c# .net entity-framework-core
1个回答
1
投票

作为解决方法,可能会将迁移更改为:

migrationBuilder.Sql("EXEC sp_rename N'[VirtualAccountStatus].[Date]', N'DateUTC', N'COLUMN';");
© www.soinside.com 2019 - 2024. All rights reserved.