我们的实体具有以下属性:
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
的列(也许是保留关键字?)
我怎样才能克服这个问题,以便重命名该字段并使迁移满意?
作为解决方法,可能会将迁移更改为:
migrationBuilder.Sql("EXEC sp_rename N'[VirtualAccountStatus].[Date]', N'DateUTC', N'COLUMN';");