2010-12-16 24 views
0

私たちには、各クライアントが独自のdb(現時点では約700)を持つwebappがあります。多くのデータベースとの接続

SubSonic 2では、適切な接続文字列を使用してSharedDBConnectionScopeを渡して各呼び出しをラップする必要がありました。そうでないと、スレッドまたはクライアントが別のスレッドまたはクライアントからデータを取得するリスクがありました。

これはまだ必要ですか?私は2.xのようにコールをラップする必要がありますか?

データベースを簡単に切り替える方法はありますが、依然としてスレッドの問題がありますか、SharedDBConnectionScopeへの呼び出しを廃止できますか?

いくつかの例:

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

亜音速3は大幅に傷や名前だけとconnectionsctringを渡してから、プロバイダを作成する方法を改善しましたクライアントがクラスに接続してこれを使用します。

+0

私はそれを理解しています。私は、IQuerySurface(あなたの例ではYourDB)を作成するときに接続文字列を設定しています。しかし、2.xではスレッディング問題が発生しますが、SharedDBConnectionScopeを使用しない限り、クライアントaは臨床検査bのデータを参照します。私はちょうど同じスレッドの問題が存在するかどうか、またはプロバイダがどのように作成されたかについての変更を行うことでそれが解決されるかどうか疑問に思っています。 – JayGlynn

関連する問題