2015-01-15 73 views
0

首先,我的問題是基於給出的答案here爲什麼每個表都必須有一個主鍵?

我有一張表,我沒有創建一個主鍵。此表用於記錄目的。 雖然增加使用的EntityFramework(V6.0)的新記錄這個表我得到以下錯誤:

型「System.Data.Entity.Infrastructure.DbUpdateException」的異常出現在EntityFramework.dll但沒有在用戶代碼中處理 附加信息:無法更新EntitySet的「狀態」,因爲它具有定義查詢且元素中不存在元素以支持當前操作。

經過一番搜索,我發現這個錯誤發生是因爲我的表沒有主鍵。 我知道我可以通過添加一個主鍵到我的表來解決這個錯誤。但我想知道爲什麼。

問題: 如果沒有必要爲我設計,我的表中使用一個主鍵,爲什麼不是有可能爲的EntityFramework與這方面的工作?

+0

爲什麼你需要一個名字或一個單詞? – 2015-01-15 15:29:11

+1

@WillMarcouiller糟糕的問題 - 名稱不是唯一的! – Vladimirs 2015-01-15 15:29:50

+2

爲什麼我在銀行的帳戶有一個帳號? – hatchet 2015-01-15 15:30:44

回答

4

why isn't it possible for EntityFramework to work with tables without primary keys?

這是一個設計決定。當行的唯一性無法確定時,實體框架不希望進行更新。

他們本可以決定支持它,例如通過爲所有列添加where oldcolN=oldvalN,但仍然可能會比預期的更多地更新行。

+0

行的唯一性總是可以確定的。 – 2015-01-15 15:29:46

+3

@布萊恩啓迪我。 – CodeCaster 2015-01-15 15:30:33

+0

我沒有考慮過那個角度下的問題,有趣! =) – 2015-01-15 15:30:58

相關問題