寫登入註冊的部分,測試註冊功能時,資料輸入完畢按下註冊送出資料後會出現以下錯誤訊息。
System.Data.Entity.Infrastructure.DbUpdateException: 'Unable to update the EntitySet 'tMember' because it has a DefiningQuery and no element exists in the element to support the current operation.'
內部例外狀況
UpdateException: Unable to update the EntitySet 'tMember' because it has a DefiningQuery and no element exists in the element to support the current operation.
tMember int IDENTITY (1,1) NOT NULL
已解決,原本我用A資料庫後來改用B資料庫,
而B資料庫的table我是用
select * into B.dbo.tMember from A.dbo.tMember
因此原本B資料庫中的table沒有主鍵,
雖然後來有加上,但是mvc專案內的.edmx檔沒有更新,
所以造成看起來有主鍵,但程式真的再抓的資料是沒有主鍵的。
另外想請這以上這段,有比較專業的解釋方式嗎,感覺講的好口語,好菜鳥,該怎麼修正呢~
簡單來說,應該是手動變更資料庫後,沒有手動更新edmx檔;或是說沒有執行從資料庫更新模型 (Update Model from Database)。
我找了幾篇文章,供您參考:
執行 Entity Framework 的「從資料庫更新模型」為何不更新
Entity Framework Database first 手動更新
Entity Framework edmx檔案,不透過從資料庫更新模型更新DB新增加的欄位
我直接用Edge的Bin Chat,把你的錯誤訊息複製貼上,他是這樣回答我的
以下是我找到的資訊:
這個錯誤通常是因為以下原因之一:實體集從資料庫檢視中映射、自訂資料庫查詢、資料庫表沒有主鍵1。
請確認您的資料表是否有主鍵1。
如果您無法新增主鍵,請參考 Stack Overflow 上的這篇文章。
希望這些資訊能對您有所幫助!