У меня проблема, которая уместна для TPH, я считаю. Это сценарий: У нас есть одна таблица под названием «Художники», у которой есть некоторые свойства о художниках (например, имя, минибио и т. Д.) И поле байта, которые используются для определения типа исполнителя: со значениямиТаблица структур Entity в иерархии Наследование проблемы
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)
+---------------------------------------+---------+
Теперь я могу сделать TPH с помощью обновляемых мнениями с хранимыми процедурами (для CRUD).
Я также знаю, что это невозможно (для меня, по крайней мере!) Сделать это с помощью условного сопоставления, так как я не могу использовать выражение с побитовым ИЛИ, например, «(Вид | 2) = 2» в состоянии.
Я думал, altenativelly, что изменение структуры таблицы путем расщепления де поля Kind, во что-то вроде:
+-----------------------------------------------------------------------------------------+
| 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.
Мой вопрос в том, есть ли другие способы сделать это?
Заранее спасибо.