2013-04-02 17 views
1

我目前正在使用一個數據庫,從另一個系統中提取信息進行處理。我決定使用實體框架和數據庫優先方法來組成我的數據訪問。該項目的一個獨特之處在於,我使用外部系統中的buisness密鑰作爲將在關聯表中顯示的密鑰,但它不是我係統中的主鍵。我在關聯表EG MyTable.ExternalId --> Review.ExternalId(ExternalId不是父表中的pk)中使用此關鍵字。正因爲如此,即使我在子表上有一個外鍵約束,使得這種關係在數據庫中是已知的,EF也不會識別關係。EF v4映射關係沒有主鍵 - DB首先

有沒有辦法覆蓋EF告訴它使用ExternalId而不是PK來建立關係?還是會建議我只是改變關係來使用父表的PK?

+1

您可以通過右鍵單擊實體並選擇「添加新的導航屬性」來添加新的導航屬性。然後,在屬性窗口中,選擇需要在選擇框中導航到的外鍵。這種方法是否適用於不指向主鍵的外鍵?我認爲不好的做法是根據不是初選的外鍵創建實體。在我看來,你應該只使用查詢來獲取那些,而不是導航屬性。 –

+0

@jrosseel設計器顯示外鍵,但不顯示不在另一個表中的pk的鍵。 ExternalId的確有唯一的索引。儘管如此,我確實看到了你對這個查詢所說的話。 – Justin

回答

1

EF doesn't support unique keys尚未如此您不能使用您的ExternalId作爲數據庫中主記錄的標識。您必須在表中使用ExternalId作爲PK或與主體表的真實PK建立關係。