Ответ 1
Вы должны проверить мою серию EF Tips.
Тот, который называется Как выбрать стратегию наследования, должен дать вам больше понимания
Надеюсь это поможет
Alex
В настоящее время я читаю о возможности использования наследования с Entity Framework. Иногда я использую протокол для ввода записей данных, и я не уверен, буду ли я использовать TPT или TPH или none...
Например... У меня есть магазин электронной торговли, который добавляет доставку, выставление счетов и адрес доставки
У меня есть таблица адресов:
RecordID
AddressTypeID
Street
ZipCode
City
Country
и таблицы AddressType
RecordID
AddressTypeDescription
Дизайн стола отличается от дизайна gerneral, когда люди показывают TPT или TPH... Имеет ли смысл думать о наследовании, когда имеет такой подход.
Надеюсь, это имеет смысл...
Спасибо за любую помощь...
Вы должны проверить мою серию EF Tips.
Тот, который называется Как выбрать стратегию наследования, должен дать вам больше понимания
Надеюсь это поможет
Alex
Рассматривая, как представлять наследование в базе данных, вам нужно рассмотреть несколько вещей.
Если у вас много разных подклассов, у вас может быть много дополнительных объединений в запросах с участием более сложных типов, которые могут повредить производительность. Одним из больших преимуществ TPH является то, что вы запрашиваете одну таблицу для всех типов в иерархии, и это является благом для производительности, особенно для более крупных иерархий. По этой причине я склонен одобрять этот подход в большинстве сценариев
Однако TPH означает, что у вас больше не могут быть поля NOT NULL
для подтипов, поскольку все поля для всех типов находятся в одной таблице, что повышает ответственность за целостность данных в отношении вашего приложения. Хотя это может показаться ужасным на практике, я не счел это слишком большим ограничением.
Однако я бы использовал TPT, если для каждого типа было много полей, и количество типов в иерархии, вероятно, было бы небольшим, а это означало, что производительность не была такой проблемой для объединений, и вы получаете лучшую целостность данных.
Обратите внимание, что одно из преимуществ EF и других ORM заключается в том, что вы можете изменить свое мнение по дорожке, не оказывая влияния на ваше приложение, поэтому решение не обязательно должно быть полностью вырезано из камня.
В вашем примере он не имеет отношения наследования, он выглядит как от одного до многих от типа адреса до адресов
Это будет отображаться между вашими классами примерно так:
Address.AddressType
AddressType.Addresses
Как подсказывает Кейт, этот article подсказывает, что TPT в шкалах EF ужасно, но я сам не пробовал.
Найдите эту статью. Рассматриваются некоторые аспекты использования наследования.