4

所以這裏是交易,我已經改變了我的數據庫模式,並且改變了我的一個表格的PK,並且刪除了與舊PK(FK參考另一張桌子)。當在實體框架中使用savechanges()時,無效的列名稱

但是我有這樣的異常,當我插入使用的SaveChanges()方法

EX =一個新的實體{「而更新所述條目時發生錯誤。詳見內部異常。」}

和內例外是

的InnerException = { 「無效的列名稱Audit_ID'。」}

Audit_ID是舊的PK。

我已經試過這 "Invalid column name" when trying to insert data into database using SQL

Invalid column name when trying to add an entity to a database using DbContext

Invalid column name after mapping

和沒有解決我的問題,從而爲我刪除了我的整個EDMX並建立一個新的也沒用。

PS:我使用的數據庫第一種方法

+0

你能顯示'savechanges()''ef query'嗎? – Sampath

+0

通常刪除舊PK並添加新PK需要使用DB第一種方法進行模型更新。如果您刪除了舊的'Audit_ID' PK的所有FK引用,則可以在模型類內設置'KeyAttribute'爲數據庫集分配新的PK。 –

回答

1

由於該問題實際上存在於SQL服務器數據庫中,所以解決方案都不起作用。

我運行SQL事件探查器並執行程序插入語句,我發現錯誤出現在具有「上一列」名稱的表格觸發器中,並將其更改爲新的PK,並最終奏效。

因此,如果任何人有類似的問題,在帖子中的上述鏈接可能會有所幫助,或者你應該檢查問題是否真的發生在數據庫服務器上。

0

移除/刪除從EF模型表(確保它通過查看模型瀏覽器視圖中刪除)。

重建解決方案。

確保您的表已保存。檢查你的連接字符串,以及你正在引用正確的數據庫。

通過更新模型工具再次添加表。

編輯:更好地閱讀問題

+0

沒有工作夥伴,它實際上使情況變得更糟 – SaadK

+0

這是極不可能的。你是否還有任何外鍵連接? – Karlta05

+0

_如何讓事情變得更糟? – Luke

0

創建您自己的ModelKeyBuilder類。

class MyOwnModelKeyBuilder 
{ 

    public static void BuildCompositeKeys(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<YourEntity>() 
     .Ignore(x=>x.Audit_ID) 
     .HasKey(x=>x.NewPrimaryKey); 
    } 
} 

而在你Model.Context.cs

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    MyOwnModelKeyBuilder.BuildCompositeKeys(modelBuilder); 
} 

它可能不是直線解決方案,因爲我不知道的表結構,但它可以幫助你。

+0

沒有工作,「Audit_iD沒有定義) – SaadK