Как сопоставить Dapper Extensions с несколькими базами данных? - PullRequest
2 голосов
/ 12 апреля 2019

Я не смог найти в Интернете пример, в котором вам показали, как создавать сопоставления с несколькими базами данных (в одном приложении) на основе того, какую единицу работы вы используете.Похоже, что Dapper Extensions будут принимать только один глобальный SqlDialect.

. Я хочу использовать Dapper Extensions для сопоставления с несколькими базами данных, в зависимости от того, какую Единицу работы я использую.Так, например, для UoW для репозиториев User и UserLogin, я хочу сопоставить их с MySql.Для UoW для репозиториев Product и Orders я хочу сопоставить с Postgres.Оба эти сопоставления должны работать в одном приложении одновременно.

Я не уверен, как это сделать, поскольку свойство SqlDialect представляется глобальным параметром.

1 Ответ

2 голосов
/ 16 апреля 2019

Класс DapperExtensions является классом static. Следовательно, все члены, включая SqlDialect, равны static. Вот почему проблема, которую вы упомянули в вопросе. Несмотря на глобальный характер, если бы это был класс / член экземпляра, вы могли бы просто создать другой экземпляр, но это невозможно из-за способа разработки DapperExtensions.

Об этой проблеме сообщается на GitHub здесь .

Следующее может быть возможным решением.

Если вы хотите использовать несколько реализаций DapperExtensions, вы можете попробовать использовать impl := new DapperImplementor(new SqlGeneratorImpl(config));

Я не могу объяснить больше, потому что я никогда не использовал этот подход.

...