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.
}

现在,当我想为不同的脚本使用不同的连接字符串时,问题就出现了。例如:我想使用 connectionString1 来执行Resources.Script1,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具有两个属性的新类,如下所示:

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 回答