Связи со многими базами данных - PullRequest
0 голосов
/ 17 декабря 2010

У нас есть веб-приложение, в котором каждый клиент имеет свою собственную базу данных (на данный момент около 700).

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

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

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

1 Ответ

0 голосов
/ 17 декабря 2010

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

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

// 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);

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

...