1
在我現在的工作,我不斷地通過一系列的,在達到高潮我的前任作出的決定所困擾:在沒有外鍵的數據庫上使用Entity Framework - 如何「僞造」它們?
- 所有主鍵的GUID(不是一件壞事本身)
- 有沒有外國數據庫中的密鑰(這是由業務邏輯處理的)
- 當'外鍵'爲空時,而不是
null
我們使用Guid.Empty
。這些領域都是空的,但業務邏輯和報告山依靠空的領域Guid.Empty
我一直纏繞我的腦子最長的時間來嘗試和添加一些理智這個模型。我的想法是
- 不能只是添加外鍵到數據庫。這會立即破壞大量的功能並且不可行。
- 最近我們一直在遷移使用實體框架。我已經閱讀了關於EF模型的嘲笑,以便在代碼中使用假外鍵,但是這被數據庫中的所有空Guid打敗,並且會生成密鑰未找到錯誤
- 我曾考慮添加'空'的記錄,所以空的Guids有指向的東西,但是這給了我們一個額外的空白行(例如當顯示列表時),並打破顯然依賴於某些查詢的空guid返回的報告。
- 我唯一模糊的功能思想是我可以修改實體框架的某些部分來處理Empty Guids中的特殊規則,但這讓我充滿了悲傷的想法,更不用說它超出了我可靠地做到這一點的能力。
我真的真的很想能至少使用實體框架的延遲加載和Include
能力,以獲得相關的記錄,但我不能想辦法,這是可能考慮到我們目前的數據庫模式/模式。有沒有人有任何建議/想法?
如果沒有外鍵,你怎麼能關聯他們之間的表? – 2014-09-18 21:02:21
@BilelChaouadi關係存在,密鑰本身不在數據庫中,也不在其中。在這種情況下,它們存在於我們的'minds' – cost 2014-09-18 21:05:09
中,您可以使用virtual關鍵字來允許延遲加載 – 2014-09-18 21:13:43