我结束了在一个web.config设置应用存储的联系人数据库名称
<configuration>
…
<appSettings>
…
<add key="ContactDBName" value="ContactDataBase"/>
</appSettings>
…
</configuration>
我再从的Application_Start()
public class WebApiApplication : System.Web.HttpApplication
{
public static string ContactDBName;
protected void Application_Start()
{
...
ReadContactDBNameFromConfig();
}
protected void ReadContactDBNameFromConfig()
{
System.Configuration.Configuration rootWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/WebServiceName");
System.Configuration.KeyValueConfigurationElement contactDBNameElement = rootWebConfig.AppSettings.Settings["ContactDBName"];
ContactDBName = contactDBNameElement.Value;
}
}
我也存储在存储过程转换成字符串读这为全球性的静态字符串,使用“PLA ce holder“字面值”{0}“作为DB名称。
public static string BUILDING_SP =
@"BEGIN TRANSACTION
...
UPDATE [{0}].[dbo].[TblContact]
SET param1 = @Param1,
param2 = @Param2,
...
WHERE record_id = @RecordID
...
COMMIT";
然后我用的String.Format设置占位与DB名称
string sql = String.Format(BUILDING_SP, WebApiApplication.ContactDBName);
这个字符串,然后通过SqlCommand对象执行。
这是不是一个选项的原因是简单的B/C我不喜欢,或有时间,重新实现存储的过程。我只在SqlLite数据库的代码中完成了事务,但尚未在MSSql数据库上完成。 – samosaris
@SamusArin:在这种情况下,考虑到链接服务器或同义词... –
我已经在Web配置中指定了与Building DB的连接,并且使用此连接从控制器中启动了building_sp。我可以在这个配置文件中添加另一行来指定联系人数据库,可能是一个字符串字面值,或者是一个排序连接,然后引用这个“配置变量”或来自building_sp的连接? – samosaris