我想这看起来有点愚蠢,但我正试图找到一种简单的方法。
我在不同的文件中有一堆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
,使用{1}}的connectionString2。
我如何在Resources.Script2
方法中执行此操作?有没有办法在进入方法后找到资源的名称?或者我应该明确定义单独的连接字符串?
答案 0 :(得分: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; }
}
您可以为每个脚本使用另一个连接字符串。
答案 1 :(得分: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.
}