我有一個與TPH相關的問題,我相信。這是場景: 我們有一個名爲Artists的表,它具有關於藝術家的一些屬性(如名稱,minibio等)和一個字節字段,用於確定藝術家的類型,值如下:每個層次結構繼承的實體框架表問題
1 - Singer
2 - Actor
4 - Composer
8 - Musician
16 - Director
請注意,同一個藝術家可能只是一種或屬於多個。讓我們來看一個例子:
+-------------------------------------------------+
| Table: Artist |
+---------------------------------------+---------+
| Name | Kind |
+---------------------------------------+---------+
| Al Pacino | 2 | (Actor)
+---------------------------------------+---------+
| Mel Gibson | 18 | (Actor and Director)
+---------------------------------------+---------+
| Dave Matthews | 15 | (Actor, Singer, Composer and Musician)
+---------------------------------------+---------+
現在,我可以在使用可更新視圖與存儲過程(CRUD)做TPH。
我也知道這是不可能的(對我來說至少!)使用條件映射來做這件事,因爲我不能在條件中使用帶有按位或的表達式,如「(Kind | 2)= 2」。
我想過,altenativelly,即改變由德分裂樣的領域表結構,爲這樣的:
+-----------------------------------------------------------------------------------------+
| Table: Artist |
+---------------------------------------+-------+--------+----------+----------+----------+
| Name | Actor | Singer | Composer | Musician | Director |
+---------------------------------------+-------+--------+----------+----------+----------+
| Al Pacino | 1 | 0 | 0 | 0 | 0 |
+---------------------------------------+-------+--------+----------+----------+----------+
| Mel Gibson | 1 | 0 | 0 | 0 | 1 |
+---------------------------------------+-------+--------+----------+----------+----------+
| Dave Matthews | 1 | 1 | 1 | 1 | 0 |
+---------------------------------------+-------+--------+----------+----------+----------+
可以工作,但是這樣做,雖然我可以使用在該領域創造TPH條件映射,EF(顯然)給我一個錯誤,說明派生實體(Actor,Singer等)是
被映射到表Artist中的相同行。
我的問題是,有其他方法可以做到嗎?
在此先感謝。