我需要實現與1基類和3個子類(4類)
基類溶液:用戶
子類:客戶,OfficeUser,員工實體框架表每次型建議需要
在我的數據庫我有只有3個表:用戶,客戶端和僱員。
我沒有OfficeUsers表,因爲我需要的所有數據已經在用戶表中。
未來我希望能夠創建客戶,員工和OfficeUsers的報告數量。
我不想使用TPH,因爲我在客戶端和僱員表中有很多不可空字段。
我應該創建OfficeUsers只有UserId表,所以我可以實現TPT?
它尋找我不是很好的設計 - 只有PK表,所以我可以正確映射 - 請糾正我,如果這是做到這一點。
另一種選擇是有用戶類型科拉姆內用戶表,並以此爲鑑,但將它與TPT工作?是否有可能創建TPT與1丟失表和使用鑑別器,看起來像混合TPT和TPH,我認爲是不可能的。
在此先感謝您的答案。
編輯:
也請考慮這樣的情景:
我介紹叫MobileUser
其中也有相同的字段User
新類。在那種情況下,我無法知道有多少MobileUsers
和多少OfficeUsers
是沒有爲用戶類型引入新列的系統。
在這種情況下有2個空表(只有PK)比我在查詢表中創建依賴關係更好/更差,並且還阻止我使用一些LINQ查詢(請參閱我在Ladislav Mrnka答案下的意見)
編輯2:
有,我將不得不領域在將來添加到OfficeUser
所以我開始覺得空表可以在某種程度上是一種選擇,至少C#代碼的機會(查詢)看起來更乾淨。讓我知道你是否有更好的方法。
@ ladislav-mrnka我在想那個,但是我不能使用像'where用戶是OfficeUser'或者'from entities.Users.OfType()'這樣的查詢。要找出OfficeUsers的數量,我將不得不讓所有用戶不是客戶或員工 –
Lucas
2011-05-25 10:48:38
是的,這是真的。你將不得不使用'其中(x =>!(x是員工))' – 2011-05-25 10:51:20
@拉吉斯拉夫 - mrnka是啊,當我介紹了新表,如'MobileUser'我必須修改查詢,以確保它包括另一表(在這種情況下3「不是」where語句中的語句)。你認爲這個解決方案比爲* OfficeUser *創建空表更好嗎? – Lucas 2011-05-25 10:55:50