2010-12-16 2 views
0

У нас есть webapp, где каждый клиент имеет свой собственный дБ (приблизительно 700 на данный момент).Соединения со многими базами данных

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

В SubSonic3 это все еще необходимо? Нужно ли обертывать вызовы, как в 2.x?

Есть простые способы переключения базы данных, но есть ли у меня проблемы с потоком или я могу покончить с вызовом SharedDBConnectionScope?

ответ

0

SubSonic 3 значительно улучшили способ создания поставщика с нуля или просто передав имя и connectionsctring:

Некоторые примеры:

// Linq Templates: 
var db = new YourDB("connectionstring goes here", "System.Data.SqlClient"); 

// SimpleRepository without app.config 
IDataProvider provider = SubSonic.DataProviders.ProviderFactory.GetProvider(
    connectionString: "Server=localhost;Database=clientdb;Uid=root;", 
    providerName: "MySql.Data.MySqlClient" 
); 
IRepository repository = new SimpleRepository(provider, 
    SimpleRepositoryOptions.RunMigrations); 

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

+0

Я понимаю это. Я устанавливаю строку соединения, когда я создаю IQuerySurface (YourDB в вашем примере), и это работает нормально. Но в 2.x вы получите проблемы с потоками, клиент a увидит данные клиники b, если вы не используете SharedDBConnectionScope. Мне просто интересно, существуют ли те же самые проблемы с потоками или происходят изменения в том, как создаются поставщики, helpesolve. – JayGlynn 2010-12-17 14:44:18