Если под моделью EF вы подразумеваете файл EDMX, то ответ, скорее всего, не возможен.Вы можете получить новый компонент из существующего в другом проекте / решении, но вы не можете расширить EDMX = вы должны создать новый EDMX для новой модели компонента в каждом проекте, добавив его настройки.EDMX - это отображение, и если вы изменили класс или базу данных, вы должны определить новое отображение, и, поскольку EDMX - это файл XML, его нельзя наследовать так же просто, как вы делали это с классом (на самом деле, существует только один способ повторного использования существующего EDMX, ноон очень ограничен и очень сложен в использовании, потому что он не поддерживается конструктором в Visual Studio).
В случае с кодом сначала вы можете определить EntityTypeConfiguration
для базового компонента и наследовать его в новом проекте, чтобы добавитьваши новые свойства.Но опять же, вам понадобится некоторая настройка, потому что ваш построитель модели в новом проекте должен будет загрузить корректный (новый) класс конфигурации сопоставления вместо старого, используемого в исходном проекте.
В случае с первым кодом вы также можетеиспользуйте соглашения по отображению «по умолчанию», которые позволят ему работать без каких-либо изменений в отображении, если вы будете следовать правильным шаблонам именования (свойства и классы в коде должны иметь те же имена, что и столбцы и таблицы в базе данных).
Еще одна дополнительная проблемаэто с ObjectSet
/ DbSet
.Если ваш базовый контекст использует что-то вроде:
public ObjectSet<Car> Cars { get; set; }
и вы хотите, чтобы в вашем новом проекте были только производные классы, вы должны также изменить контекст, иначе вы будете работать с отображенным наследованием, которое только усложнит все.