2010-05-12 2 views
0

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

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

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

Спасибо.

+0

Это о SubSonic 3? – Jon

ответ

1

Ну, предполагая, что мы говорим о SubSonic3:

Я сделал патч для этого и вошли его как вопрос в проекте SubSonic Шаблоны на GitHub, где источник доступен. Вы можете найти проблему (и ссылку на код) here.

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

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

И вам хорошо.

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

+0

Jon Я использую Subsonic 2.0 И у меня нет доступа к исходному коду. Есть ли другая альтернатива? Спасибо! –

+1

@Marcus: обновил мой ответ, чтобы указать на соответствующий вопрос SubSonic 2. – Jon

0

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

Посмотрите на мой ответ здесь: Subsonic in a VS2008 Add-In woes

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