ef(EntityFramework)動態傳遞數據庫連接字符串


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

 

From:https://www.cnblogs.com/xuejianxiyang/p/12175719.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM