我们有一个webapp,每个客户端都有自己的数据库(目前大约700个)。
在SubSonic 2中,您必须使用SharedDBConnectionScope
传递正确的连接字符串来包装每个调用,否则您将冒一个线程或客户端从另一个线程或客户端获取数据的风险。
在SubSonic3中还需要吗?我是否需要像在2.x中那样包装调用?
现在有一些简单的方法可以切换数据库,但我是否还有线程问题,还是可以取消对SharedDBConnectionScope
的调用?
答案 0 :(得分:0)
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);
所以基本上你可以在每次客户端连接并在你的类中使用它时创建一个提供者或存储库。