Организовать мои доменные объекты в DDD при использовании ado entity Framework - PullRequest
3 голосов
/ 29 августа 2010

У меня есть эти 2 типа пользователей: родители и дети, оба являются пользователями и имеют одинаковые свойства, но разные методы.

я создал класс базового пользователя и 2 класса: родитель и ребенок, оба наследуютform Пользовательский базовый класс, и каждый класс имеет несколько различных методов.
Пользовательский класс является частичным классом, потому что модель структуры сущностей имеет тот же класс, потому что в базе данных есть только таблица Users, нет родителей или детей.

Теперь, когда я создаю объект из класса Parent и пытаюсь вставить в базу данных, используя ado entity framework "AddObject("Users", (User)_parent)", выдается ошибка, что я вставляю parent и что ничего с этим идентификатором для вставки нет.

Итак, мой дизайн, управляемый доменом, имеет что-то не так, или я должен что-то редактировать в структуре сущностей?

1 Ответ

2 голосов
/ 29 августа 2010

Это называется Table Per Hiearchy (TPH).Это означает, что вы хотите использовать одну таблицу для хранения нескольких сущностей, которые унаследованы от базовой сущности.В вашем случае это немного специфично, потому что унаследованные объекты не имеют никаких дополнительных свойств для хранения.

Вам необходимо добавить классы Parent и Kid в вашу модель сущности (производную от сущности User).Вам нужен один дополнительный столбец в базе данных, чтобы различаться между Parent и Kid - это единственный способ, как EF знает, какую сущность создать при выполнении запроса из таблицы User.Необходимо сопоставить родительский объект с правильным значением столбца дискриминатора, а объект Kid - с другим значением столбца дискриминатора.Вот сообщение в блоге о TPH в EF.

...