簡體   English   中英

實體框架錯誤地引用了已刪除的列

[英]Entity Framework incorrectly referencing deleted Column

我的數據庫和EF EDmX模型中都有一個名為ROWID的列。 我不再需要該列,因此我從表中刪除了該列包括它正在使用的約束和索引 )。

然后,我刪除了整個EDMX模型,並從頭開始重新創建 現在,當我更新此表中的一行時,它引發異常

{“無效的列名稱“ ROWID”。\\ r \\ n無效的列名稱“ ROWID”。”}

當我使用dbContext.SaveChanges()方法時發生錯誤

以下是堆棧跟蹤:

在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布爾調用程序HasConnectionLock,布爾asyncClose)在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(SqlException異常,布爾breakConnection,動作'1 wrapCloseInAction)在System.Data.SqlClient.TdsParser在System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runCommands.SqlData)中的。 RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean異步,Int32超時,任務和任務,Boolean asyncWrite,SqlDataReader ds)位於System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior,RunBehavior, '1完成,Int32 t 在System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource'1完成,字符串methodName,布爾sendToPipe,Int32超時,布爾asyncWrite)中的imeout,Task&task,布爾asyncWrite)在系統中的System.Data.SqlClient.SqlCommand.ExecuteNonQuery() .Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter adapter)上的UpdateTranslator translator,EntityConnection連接,Dictionary'2 identifierValues,List`1 generateValues)

因此,我認為問題出在數據庫中。 因此,EF實際上並沒有保存,而是觸發了此保存,仍在其中引用了ROWID列(再次執行此觸發器,並且在將數據從Oracle DB遷移到SQL Server時,Entity Framework自動創建了該列。在此自動創建的觸發器中,則將唯一標識符設置為默認值,而不是NEWID())

因此,如果您遇到任何類似的問題,則應檢查要修改的表上是否有任何觸發器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM