2014-09-18 42 views
1

在我現在的工作,我不斷地通過一系列的,在達到高潮我的前任作出的決定所困擾:在沒有外鍵的數據庫上使用Entity Framework - 如何「僞造」它們?

  1. 所有主鍵的GUID(不是一件壞事本身)
  2. 沒有外國數據庫中的密鑰(這是由業務邏輯處理的)
  3. 當'外鍵'爲空時,而不是null我們使用Guid.Empty。這些領域都是空的,但業務邏輯和報告山依靠空的領域Guid.Empty

我一直纏繞我的腦子最長的時間來嘗試和添加一些理智這個模型。我的想法是

  1. 不能只是添加外鍵到數據庫。這會立即破壞大量的功能並且不可行。
  2. 最近我們一直在遷移使用實體框架。我已經閱讀了關於EF模型的嘲笑,以便在代碼中使用假外鍵,但是這被數據庫中的所有空Guid打敗,並且會生成密鑰未找到錯誤
  3. 我曾考慮添加'空'的記錄,所以空的Guids有指向的東西,但是這給了我們一個額外的空白行(例如當顯示列表時),並打破顯然依賴於某些查詢的空guid返回的報告。
  4. 我唯一模糊的功能思想是我可以修改實體框架的某些部分來處理Empty Guids中的特殊規則,但這讓我充滿了悲傷的想法,更不用說它超出了我可靠地做到這一點的能力。

我真的真的很想能至少使用實體框架的延遲加載和Include能力,以獲得相關的記錄,但我不能想辦法,這是可能考慮到我們目前的數據庫模式/模式。有沒有人有任何建議/想法?

+0

如果沒有外鍵,你怎麼能關聯他們之間的表? – 2014-09-18 21:02:21

+0

@BilelChaouadi關係存在,密鑰本身不在數據庫中,也不在其中。在這種情況下,它們存在於我們的'minds' – cost 2014-09-18 21:05:09

+0

中,您可以使用virtual關鍵字來允許延遲加載 – 2014-09-18 21:13:43

回答

-1

link應該幫助你開始,這將幫助你在設計師自己映射關係。

+0

實體框架要求數據庫模式具有您映射的任何關係的外鍵。 – pnschofield 2016-04-25 20:26:38

相關問題