沒有進入「爲什麼」,才明白這一點繼承和我有什麼用:)實體框架的地圖數據錯誤時,標識列不是唯一的
工作,我有一個EF6 EDMX映射到一個視圖。沒有標識列,因此爲了EF映射實體,第一個非空列被選爲PK。這背後的原始想法是只讀不會更新或刪除。沒有過濾(ODATA位於此之上),而且只有 - 我的意思是 - 實體使用的方式是select top N *
。
視圖中有4條記錄。
TypeCode | Contact | UserID | LocaleID | EntityName
---------------------------------------------------------
1 6623 1032 9 Jane
1 6623 1032 9 Jane
1 6623 1032 9 John
1 6623 1032 9 John
我看到的問題是,EF映射所有4行相同。上面所有的「約翰」名字變成了「簡」
好的,擱置設計決定,事實上在視圖上沒有識別記錄,爲什麼EF映射最後兩行是錯誤的?我最初的想法是,因爲「PK」被設置爲TypeCode
它不知道該怎麼做。但是,當從數據庫讀取結果時,爲什麼會使用鍵列?我原以爲它只適用於更新和刪除
喬,這是否有關係,爲什麼,這是衆所周知的工作方式,你必須忍受。 –
@IvanStoev它是否已知?它實際上是否使用定義爲密鑰選擇的列? – Joe
好吧,看起來像。沒有文檔或解釋鏈接,我從這個線程學到了[在LINQ和SQL中看似等價的查詢返回不同的結果](http://stackoverflow.com/questions/33583309/seemingly-equivalent-queries-in-linq -and-sql-returns-different-results),但在其他許多地方發現類似。 –