#c# #dapper-extensions
#c# #dapper-extensions
Вопрос:
Я не смог найти пример в Интернете, где они показали вам, как создавать сопоставления с несколькими базами данных (в одном приложении) на основе того, какую единицу работы вы используете. Похоже, что расширения Dapper будут принимать только один глобальный SqlDialect
.
Я хочу использовать расширения Dapper для сопоставления с несколькими базами данных в зависимости от того, какую единицу работы я использую. Так, например, для UoW для репозиториев User
и UserLogin
, я хочу сопоставить их с MySQL. Для UoW для репозиториев Product
и Orders
, я хочу сопоставить с Postgres. Оба эти сопоставления должны работать в одном приложении одновременно.
Я не уверен, как это сделать, поскольку SqlDialect
свойство, похоже, является глобальным параметром.
Ответ №1:
Класс DapperExtensions
— это static
класс. Следовательно, все члены, включая SqlDialect
static
. Вот почему проблема, о которой вы упомянули в вопросе. Несмотря на то, что это глобальный класс / член экземпляра, вы могли бы просто создать другой экземпляр, но это невозможно из-за способа разработки DapperExtensions.
Об этой проблеме сообщается на GitHub здесь .
Возможным решением может быть следующее.
Если вы хотите использовать несколько реализаций DapperExtensions, вы можете попробовать использовать
impl := new DapperImplementor(new SqlGeneratorImpl(config));
Я не могу объяснить больше, потому что я никогда не использовал этот подход.