То, что вы используете, называется «базовым классом», а не «базовым объектом», то есть классом, участвующим в наследовании модели базы данных.
Вы вообще не обязаны использовать наследование базы данных.Более того, EF Core в настоящее время поддерживает только стратегию Таблица на иерархию (TPH) , которая не является наилучшей, если у вас есть много производных сущностей со многими различными свойствами (поскольку все данные хранятся в одной таблице).
Другими словами, нет ничего плохого в том, чтобы не использовать наследование базы данных.Единственное преимущество наследования базы данных - это если вам нужны полиморфные запросы, то есть запросы, которые возвращают Product
разных типов.Такие запросы можно выполнять без наследования базы данных, используя оператор Union
/ Concat
LINQ, но они не будут эффективными из-за отсутствия в EF Core перевода таких запросов в SQL, поэтому они всегда используют клиент оценка .
Конечно, это будет улучшено в некоторых будущих версиях EF Core (а также поддержка других стратегий наследования), поэтому главный вопрос должен быть - нужны ли вам такие запросы.Если вы этого не сделаете, то ваш подход не использовать наследование базы данных просто отлично.Если вы это сделаете, то решите, что больше подходит для ваших нужд - руководство Concat
или отдельная таблица с большим количеством столбцов.