У нас есть EF4 EDMX, который содержит ~ 300 объектов, которые используются в нашем базовом пакете продуктов (объекты, импортированные из базы данных).Расширение Core Edmx, несколько Edmx's в EF4
Когда мы получаем новых клиентов, чаще всего они хотят хранить дополнительную информацию и разрабатывают пользовательские процессы, которые находятся за пределами нашей бизнес-области и полностью обычаем. Например. Мы получили контракт с охранной компанией, и они хотели хранить информацию об их уровнях безопасности и иметь процессы, которые действуют на этих уровнях.
В каждом случае нам нужно добавить пользовательские таблицы AND/ИЛИ добавить настраиваемые поля к существующим объектам. У нас был хороший способ сделать это с использованием предыдущих технологий, в которых библиотеки основных классов не были загружены с помощью пользовательских таблиц и т. Д. Мы просто унаследовали от основной сущности (эквивалентной EntityObject в EF) в пользовательской библиотеке классов и добавляли настройки по мере необходимости.
Аналогичным образом мы не хотим добавлять эти пользовательские таблицы и атрибуты в наш основной EDMX. Мы хотим по существу «наследовать» от основного EDMX в новом пользовательском EDMX в отдельной библиотеке классов, где мы можем добавить настройки. Наследование позволит нам сделать все возможное в Core EDMX плюс немного больше.
Мы используем шаблон t4 для создания наших хранилищ на основе этого блога (мы не используем модель-первый подход):
Можем ли мы направить EDMX как мы требуем?
Мы пришли с одним хаком раствором, расширение метода на основной деятельности, который возвращает настраиваемый объект в отдельном EDMX как в ниже:
public static class CoreEntityExtensions
{
public static EntityConnection EntityConnection;
public static CustomUserEntity CustomUserDetails(this User coreUser)
{
ICustomUserEntityRepository customUserRepository = new CustomUserEntityRepository(EntityConnection);
return customUserRepository.All().SingleOrDefault(u => u.id == coreUser.id);
}
}
Это не идеально, хотя в течение нескольких очевидных причин.
Любая помощь очень ценится.
У вас есть способ сделать это? – frabiacca