0

これは少しばかげているように見えると思いますが、私はこれを行う簡単な方法を見つけようとしています。

さまざまなファイルに多数のSQLスクリプトがあり、それらを.netプロジェクトにテキストファイルリソースとして追加しました。これらの各リソース文字列をExecuteScript、事前定義された接続文字列を使用して、データベースでスクリプトを実行するメソッドに渡します。こんなふうになります:

ExecuteScript(Resources.Script1);
ExecuteScript(Resources.Script2);
ExecuteScript(Resources.Script3);

private void ExecuteScript(string script)
{
    connectionString = // Get connection string from config file
    // Rest of the code to execute the script.
}

スクリプトごとに異なる接続文字列を使用したい場合に、問題が発生します。例:実行Resources.Script1にはconnectionString1を使用し、。にはconnectionString2を使用しResources.Script2ます。

ExecuteScriptメソッド自体でこれを行うにはどうすればよいですか?メソッドに入った後にリソースの名前を見つける方法はありますか?または、個別の接続文字列を明示的に定義する必要がありますか?

4

2 に答える 2

2

より複雑なタイプをパラメーターとして使用できます。

ExecuteScript(Resources.Script1); 
ExecuteScript(Resources.Script2); 
ExecuteScript(Resources.Script3);  

private void ExecuteScript(ScriptContext scriptContrxt) 
{     
    connectionString = // Get connection string from config file     
    // Rest of the code to execute the script. 
}

ScriptContext次のような2つのプロパティを使用して新しいクラスを定義します。

public class ScriptContext
{
     // may be create a constructor and make the setter private.
     public string script { get; set; }
     public ConnectionString ConnectionString { get; set; }
}

すべてのスクリプトに別の接続文字列を使用できます。

于 2012-10-23T07:15:15.697 に答える
0

リソースの名前またはconnectionStringがスクリプト内に含まれていない限り、これを実現することはできません。
私はこのようなものに行きます:

ExecuteScript(Resources.Script1, Resources.ConnectionString1);

または、代替手段として:

private void ExecuteScript(int index)
{
    var connectionString = Resources.ResourceManager.GetString(string.Format("ConnectionString{0}",index));
    var script = Resources.ResourceManager.GetString(string.Format("Script{0}",index));
// Rest of the code to execute the script.
}
于 2012-10-23T07:21:08.737 に答える