2011-01-11 53 views
0

試圖將實體框架中的兩個關係從多對一更改爲多對多關係。所以我嘗試了一些顯而易見的事情:點擊圖表上的每個關聯,相應地更改關聯的適當端點,然後將導航屬性的名稱更改爲複數以反映更改。實體框架中的正確關聯映射

這導致下面的生成錯誤,或者每一個爲我做了兩個變化:在映射 片段起始於線 1761問題::潛在的運行時違反 表的

錯誤3002 CustomerServices的鍵 (CustomerServices.Id):列 (CustomerServices.Id)映射到 EntitySet的 CompiledDatabaseCustomerService的 性質 (CompiledDatabaseCustomerService.CustomerService.Id) 概念的一面,但他們不 形式的EntitySet的關鍵特性, (CompiledDatabaseCustomerService.CompiledDatabase.Id, CompiledDatabaseCustomerService.CustomerService.Id)

我不完全知道爲什麼發生這種情況,所以我unsurprisngly修理它沒有太多的運氣。我試圖擺弄映射的細節和增加參考約束無濟於事。任何人都指向正確的方向?

歡呼聲, 馬特

回答

0

好的,事實證明,所有需要的是從模型更新數據庫。白癡我 - 我認爲只重新生成SQL腳本來創建數據庫。

0

的第一件事情來檢查時,你得到這個錯誤是看並確保在你的數據庫模式鍵列匹配您的實體定義。當我進行更新時,我遇到了類似的問題。

如果這看起來不是您的問題,那麼還請檢查您是否沒有按照您的映射翻轉列 - 確保所有內容都按正確的方向映射。 (我會建議直接看看你的映射,看看是否發生了這種情況。)

+0

感謝您的期待。我實際上沒有觸及關鍵映射,所以這似乎不太可能解決問題:我所做的所有事情都改變了現有關聯的一端。當你說直接查看映射時,你的意思是檢查Designer.cs文件? – 2011-01-11 16:25:31

+0

@Matt - 右鍵點擊實體圖表中的表格並選擇「表格映射」,查看錶格映射。在列映射下查看並確保它們被適當映射。 (順便說一句,我不積極,我的建議會幫助你(我希望他們這樣做),但那些是我看到過的這樣的問題的兩個方面。) – JasCav 2011-01-11 16:38:03