2016-01-21 61 views
1

我在這裏有一個錯誤,無法完全理解它背後的邏輯。我正在使用實體框架6和模型優先方法。我設計了相互引用這樣的兩個表:如何將外鍵映射到兩個相互引用的實體中

enter image description here

基本上,一個賬戶需要在一個公司,而公司必須有一個帳戶爲管理員。但是,我從EF驗證程序中收到錯誤:

錯誤3014:映射從224行,249行開始的映射片段時出現問題:從表CompaniesSet(Id)的外鍵約束'CompaniesAccounts1'到表AccountsSet (Id):'沒有在模型中執行。需要創建關聯或繼承關係來強制執行此約束。

CompaniesAccounts1是您在這裏看到的第一個協會(1 ... *),Accounts是委託人。第二協會有Companie作爲委託人。有人知道我爲什麼得到這個錯誤?

所有4個屬性都是不可空的Int32類型。

+2

從關係的角度來看,你在這裏試圖做的是不可能的。至少有一個屬性必須爲空。你正在這裏創建一個雞和雞蛋的問題。您需要公司記錄才能附加管理員帳戶,但您需要該帳戶的帳戶記錄才能在公司記錄中指定爲管理員帳戶。 – AgapwIesu

+0

好吧我改變了CompanyId爲空,第二個關係分別爲*和0..1。我仍然得到錯誤。我還錯過了什麼嗎? – LeonidasFett

+0

嗯,很奇怪。我檢查了設計器的xml文件,發現一些來自不再存在的關聯的工件。刪除這些後,sql文件和Model.Context.tt和Model.tt,它自己排除。我現在在一個關聯上獲得了0..1和*,而在另一個上獲得了0和1。 – LeonidasFett

回答

0

由於AgapwIesu的評論,我想出了以下解決方案:

enter image description here

奇怪的是,我注意到,因爲我已經嘗試過像這樣,還是把上述錯誤。在挖掘實體模型的xml文件後,我發現了一些我不再使用的舊引用。所以他們與我現有的模型搞混了。刪除這些和生成的文件/數據庫腳本並重建所有內容後,它就可以工作。

相關問題