@Mindgrow

EntityFramework — можно ли «скрестить» контексты?

Добрый день.

В проекте есть 2 контекста ( DbContext):
- ApplicationDbContext - через него осуществляется доступ к AspNetUser и ролям
- CRMContext - для работы с сущностями бизнес-логики, таким как Appointment (встреча)
В Appointment я хотел бы сделать поле, в котором бы указывался AspNetUser (авторизованный пользователь) - то есть сущность из другого контекста. Но оба контекста работают с одной БД.
Такое можно сделать?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
@FreeBa
Это очень-очень плохая практика использовать два контекста для одной базы. Если вам требуется использовать два контекста, то просто унаследуйте один от другого.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@basrach
Можно.

Контексты не знают друг о друге ничего, и нет никакой разницы, создаете вы два экземпляра одного класса контекста, или два экземпляра разных классов контекстов. Каждый экземпляр полностью изолирован и функционирует так, будто он один на свете. Т.е. в него можно пихать любые таблицы/сущности и мапинги лишь бы они были корректны с точки зрения схемы бд.
Единственный минус возможно заключается в том, что какие-то маппингы придется дублировать в двух местах. Таким образом возможно могут быть нарушены принципы вроде DRY и еще какие-нибудь. Но, как предложили выше, наследование закрывает этот вопрос.
В любом случае окончательно решение нужно принимать с учетом всех особенностей вашей архитектуры.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы