我有一个与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中的相同行。
我的问题是,有其他方法可以做到吗?
在此先感谢。