EF Core 3.1 - DB и наследование - PullRequest
       20

EF Core 3.1 - DB и наследование

0 голосов
/ 23 апреля 2020

Я создал в своей базе данных 3 таблицы, каждая с первичным ключом.

Person, Man, Woman

Идея состоит в том, что мужчина и женщина наследуют от Person, поэтому их первичные ключи также являются FK для Person PK.

Я генерирую модель с помощью команды Scaffold-DbContext и, очевидно, я не получаю никакого наследования в своих моделях, поэтому я явно делаю это ...:

Man : Person {...}
Woman : Person {...}

Однако по-прежнему чего-то не хватает, так как я получаю ошибку времени выполнения: «Невозможно настроить ключ в« Man », поскольку он является производным типом. Ключ должен быть настроен в root типе« Person »."

Если я это сделаю, то получаю ошибку, говоря, что я должен установить Ключ не в базовом классе, а в производном классе.

Есть ли какое-то решение для этого с использованием БД Первый подход?

Я не против того, как внутренне выглядит БД (1 таблица также подходит для дискриминатора), я просто хочу наследования в моей модели.

Спасибо

1 Ответ

0 голосов
/ 23 апреля 2020

То, что вы описываете, - это шаблон реляционного наследования TPT или таблицы для каждого типа. EF Core поддерживает только TPH или таблицу для каждой иерархии. В TPH все свойства для всех подтипов go в одну таблицу для базового типа и столбца дискриминатора добавляются для указания фактического типа. Существует длинная стоящая проблема относительно этого, которая наконец начинает набирать обороты через 6 лет. Тем не менее, он рассчитан на EF Core 5.0, так что у нас еще как минимум год, если он не проскользнет дальше.

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