1.使用entityConnectionStringBuilder 創建連接字符串
public static string GetConnStr(string host, string catalog, string user, string pass, bool winAuth=false) { SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder { DataSource = host, InitialCatalog = catalog, PersistSecurityInfo = true, IntegratedSecurity = winAuth, MultipleActiveResultSets = true, UserID = user, Password = pass, }; // assumes a connectionString name in .config of MyDbEntities var entityConnectionStringBuilder = new EntityConnectionStringBuilder { Provider = "System.Data.SqlClient", ProviderConnectionString = sqlBuilder.ConnectionString, Metadata = "res://*/FaceDB.csdl|res://*/FaceDB.ssdl|res://*/FaceDB.msl", //此處需修改為正確的字符(觀察並復制web.config中的即可) }; return entityConnectionStringBuilder.ConnectionString; }
將此方法返回的字符串傳遞進一個參數的構造函數實例化datacontext:參考http://www.voidcn.com/article/p-fllvvzft-btb.html
FaceEntities dc = new FaceEntities(GetConnStr(xxxx,xxx,xx,xx));
2.寫死字符串模板並動態替換
public static string connTemplate = "metadata=res://*/FaceDB.csdl|res://*/FaceDB.ssdl|res://*/FaceDB.msl;provider=System.Data.SqlClient;provider connection string=\"Data Source = {{DBIp}}; Initial Catalog ={{DBName}}; Integrated Security = False; Persist Security Info=True;User ID = {{DBUser}}; Password={{DBPwd}};MultipleActiveResultSets=True\"";
也需注意metadata里的值修改.(觀察並復制web.config中的即可)
var connString = connTemplate.Replace("{{DBIp}}","192.168.x.x").Replace("{{DBName}}", "FaceDB").Replace("{{DBUser}}","sa").Replace("{{DBPwd}}","sa");
FaceEntities dc = new FaceEntities(connString);
3.讀取原connectionstring再替換
public static string GetConnectionString()
{
var connectString = ConfigurationManager.ConnectionStrings["YourConnKey"].ConnectionString;
//解析connectString 替換ip,user,pwd,dbname等
connectString =替換后的string
return connectString;
}