MS EntityFramework: как разделить сущность с наследованием? Использование дискриминатора - PullRequest
0 голосов
/ 05 августа 2011

У меня есть имя таблицы транзакций в БД. Я хочу иметь 2 подкласса TransactionA и TransactionB. Я сделал это, как описано здесь: http://www.robbagby.com/entity-framework/entity-framework-modeling-table-per-hierarchy-inheritance/comment-page-1/#comment-607

Проблема в том, что мне нужно использовать поле, которое является дискриминатором (см. Пример, это PersonCategory там). Но после этого я должен удалить его.

Как решить эту проблему? Спасибо

Ответы [ 2 ]

1 голос
/ 05 августа 2011

Да, он используется в качестве помощника EF для определения типа определенного типа объекта.Недостатком является то, что подход заключается в том, что каждое поле должно быть пустым, а таблицы не нормализуются.Однако, никакие объединения не участвуют, следовательно, это быстрый подход.Таблица для каждого типа является относительно хорошим подходом. У вас есть два класса TransactionA и TransactionB с универсальным классом Transaction. Хотя в результате этого вам необходимо выполнить соединение, производительность не так уж велика по сравнению с более ранним подходом.

1 голос
/ 05 августа 2011

Если это дискриминатор, его единственное использование - сопоставить запись с TransactionA или TransactionB.Это не может быть установлено в приложении.Он устанавливается, если вы вставляете TransactionA экземпляр или TransactionB экземпляр и запись.Он также не может быть обновлен, поскольку объект одного типа не может измениться на объект другого типа - если вам нужна такая логика, вы не можете смоделировать ее как наследование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...