Я пытаюсь решить следующую проблему, используя EF, сначала код и pocos:
Допустим, у меня есть приложение, которое должно обслуживать разных клиентов. Каждый клиент получает свою собственную базу данных и модель, поэтому я создам одну модель и один проект репозитория для каждого клиента.
Проблема в том, где я должен поместить бизнес-код, общий для всех установок? В традиционном ООП у меня была бы одна библиотека классов с кучей базовых классов, определяющих основное поведение - например, UserBase, ArticleBase, константы, служебные методы и т. Д. Затем в проекте, ориентированном на клиента, я бы унаследовал класс от этого базового класса и расширил бы его данные и поведение, например. Клиент1Пользователь: Пользователь или Клиент1Артикул: ArticleBase.
Моя первая идея состояла в том, чтобы иметь общую библиотеку классов с файлом edmx, определяющим базовые классы и их отношения. С помощью шаблона tt я сгенерировал классы POCO и по желанию добавил некоторый пользовательский код
В своей пользовательской библиотеке, созданной для каждого клиента, я ссылался на эту базовую библиотеку и создавал конкретные классы, унаследованные от общей библиотеки или совершенно новых классов. В пользовательской библиотеке я также создал специфичный для клиента edmx и использовал шаблон t4 для генерации POCO.
Я также создал отдельный проект репозитория для обработки постоянства и запросов.
В классе репозитория у меня есть куча свойств DbSet ClassnameSet, которые я должен иметь возможность запрашивать.
Проблема в том, что я не могу этого сделать, и я постоянно сталкиваюсь с исключением метаданных - класс A не является частью текущей модели или
Указанная схема недействительна. Ошибки: отношения "ххх" не было
загружен, потому что тип 'model.User' недоступен. Следующие
информация может быть полезна при устранении предыдущей ошибки: База
Тип «BaseLibrary.BaseUser» типа «ClientLibrary.Model.User» делает
не соответствует базовому типу модели 'model.User'.
Спасибо за любую помощь в разрешении этой тайны. Или для того, чтобы направить меня в другом направлении для достижения моей цели.
Tvrtko