2011-08-18 104 views
0

我是新來的實體框架,只是試驗...需要關於實體框架關係的幫助

考慮3分貝表,其中人是一個基表。我希望僱員表從Person中獲取,存儲員工的具體信息。看來,EF要求PersonId也是Employee表的PK,所以我讓EmployeeID成爲唯一的索引。

接下來我添加了一個表Application,它爲Employee支持的每個軟件應用程序存儲一條記錄,從Application.EmployeeId創建一個外鍵給Employee.EmployeeId。

但是,EF似乎無法識別涉及唯一索引但僅包含主鍵的關係。

我可以做的是從Application.PersonId創建一個關係到Person.PersonId,但是,只有員工可以負責一個應用程序,所以我認爲將應用程序作爲員工的「子」似乎更自然表而不是個人表。

這可能在EF嗎? enter image description here enter image description here

+0

你在做數據庫嗎? –

+0

是的,我首先使用數據庫,雖然我試圖修改模型並查看它生成的數據庫僞裝,因此我可以「逆向工程」在首次執行db時需要執行的操作。 – ChadD

回答

0

你可以建立EmployeePersonId)和ApplicationEmployeeId)之間的關係。在這種情況下,誠信應該如您所期望的那樣工作,因爲Employee表中的PersonId s僅適用於現有員工。 EF目前不支持唯一密鑰。

+0

我不認爲。 PersonId不在模型中的Employee對象中,omly在Employee db表中。它僅在Eployee,Person的基類中。這使我相信我只能在Person和Application之間建立模型中的關係,而不能在Employee和Application之間建立關係。 – ChadD

+0

如果您按照我所述在數據庫中配置該關係並僅使用數據庫更新,會發生什麼情況? –

+0

當我這樣做時,模型找到了關係。但是,這並不是我想要的,因爲這迫使我分配與PersonId相同的Employee ID值。我寧願每個人都有一個單獨的數字池。也許我的Person表包含數百萬人,而且我只有少數員工......它看起來好像不需要很長時間(我的第一個Hello World示例)就可以找到EF的限制。令人失望... – ChadD