Дозвуковые множественные файлы SQLite - PullRequest
0 голосов
/ 13 мая 2010

У меня есть приложение, которое должно быть доступно для многих пользователей. Для оптимизации производительности я намерен хранить информацию о каждом профиле пользователя в независимом файле базы данных.

Мне нужно каждый раз, когда пользователь входит в приложение, настраивать нового провайдера, связанного с его собственной базой данных. Все базы данных имеют одинаковую структуру. Таким образом, при запросе пользователя сгенерированные коммандой классы DAL должны переключиться на файл базы данных относительно пользователя.

Есть ли способ настроить SubSonic для выполнения этого переключения во время выполнения?

Спасибо.

Ответы [ 2 ]

1 голос
/ 13 мая 2010

Ну, если мы говорим о SubSonic3:

Я сделал для этого патч и зарегистрировал его как проблему в проекте SubSonic Templates на github, где доступен исходный код. Вы можете найти проблему (и ссылку на код) здесь .

После того, как вы примените патч, у вас будет новое свойство DefaultDataProvider, которое делает именно то, что вы хотите. Используйте это так (например, после входа пользователя):

YourSubSonicGeneratedNamespace.YourDatabaseName.DefaultDataProvider =
    SubSonic.DataProviders.ProviderFactory.GetProvider(
        "your connection string here",
        SubSonic.DataProviders.DbClientTypeName.SqlLite);

И ты в порядке.

Для SubSonic 2 этот ответ звучит так, как вы хотите.

0 голосов
/ 15 мая 2010

В дозвуковой версии 2 я использую подход, в котором я внедряю провайдера во время выполнения, а не загружаю его из файла app.config.

Посмотрите на мой ответ здесь: Дозвуковой в беде надстройки VS2008

Вместо того, чтобы использовать только одного поставщика, вы можете создать его для каждого пользователя, который запускает приложение, и при необходимости изменить поставщика по умолчанию.

...