EF Core 5 — предпочтительный способ или лучшая практика подключения к базе данных только для чтения для запросов

#.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 не является соединением, но я не думаю, что у меня есть несколько подключений к разным базам данных в одном контексте?