2010-12-16 74 views
0

我們有一個web應用程序,每個客戶端都有自己的db(目前大約爲700)。與很多數據庫的連接

在SubSonic 2中,您必須將每個調用與SharedDBConnectionScope傳遞到正確的連接字符串中才能使用,否則會冒着一個線程或客戶端從另一個線程或客戶端獲取數據的風險。

在SubSonic3中,這仍然是需要的嗎?我是否需要像2.x那樣打包電話?

現在有很簡單的數據庫切換方式,但是我仍然有線程問題,或者我可以不要撥打SharedDBConnectionScope

回答

0

亞音速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中你會遇到線程問題,除非你使用SharedDBConnectionScope,否則客戶端a會看到clinet b的數據。我只是想知道是否存在這些相同的線程問題,或者對創建提供程序的方式進行更改可幫助解決該問題。 – JayGlynn 2010-12-17 14:44:18