#.net-core #entity-framework-core
#.net-core #entity-framework-core
Вопрос:
Есть ли какой-либо предпочтительный способ при использовании CQS / CQRS для последующего подключения к базе данных только для чтения? Я могу заставить его работать со вторым dbcontext, добавляя к запросам нотрекинг и вызывая исключение при SaveChanges и т. Д., Но я бы подумал, что есть какая-то встроенная поддержка или стандартное соглашение, поскольку это было бы общим корпоративным требованием.
Комментарии:
1. У вас уже есть база данных, доступная только для чтения, или вы хотите подключиться к базе данных только через настройки / конфигурации, доступные только для чтения?
2. Этот вопрос является спорным. DbContext — это не соединение, это единица работы. DbContext работает отключенным. Он не использует одно соединение. Он создает новое соединение каждый раз, когда ему нужно загрузить данные или сохранить все кэшированные изменения с помощью одного
SaveChanges
и немедленно закрывает его. Если вы используете DbContext правильно, т. Е. Создаете новый и сохраняете его только достаточно долго, чтобы обслуживать один UoW / сценарий / вариант использования / процесс, вам не нужно будет делать намного больше. Вам не нужно создавать исключения в любом случае3. Единственное , что вам может понадобиться, это использовать
NoTracking
, когда вы не хотите отслеживать объекты. Однако это имеет мало общего с доступом только для чтения. Вам не нужен DbContext только для чтения для реализации CQRS.4. У меня уже есть база данных, доступная только для чтения. Один мастер для записи и одна реплика только для чтения для чтения.
5. Я понимаю, что DbContext не является соединением, но я не думаю, что у меня есть несколько подключений к разным базам данных в одном контексте?