参考连接:C# 使用Entity在程序中设置连接字符串_c# connectionstring-CSDN博客
主要帮助类:
public static class EFConnection
{
/// <summary>
///
/// </summary>
/// <param name="addressValue">IP</param>
/// <param name="userName">用户名</param>
/// <param name="password">密码</param>
/// <param name="databaseName">数据库</param>
/// <param name="isLocal">是否使用本地Windows账户登录</param>
/// <returns></returns>
public static string GetConnection(string addressValue = "127.0.0.1", string userName = "sa", string password = "123456", string databaseName = "XYDB", bool isLocal = false)
{
string connectStr = string.Empty;
//根据isLocal来
if (isLocal)
{
connectStr = EntityConnectionString("(LocalDb)\\MSSQLLocalDB", "", "", databaseName, true);
}
else
{
connectStr = EntityConnectionString(addressValue, userName, password, databaseName);
}
return connectStr;
}
#region 生成Entity连接字符串
/// <summary>
/// 生成Entity连接字符串
/// </summary>
/// <param name="serverName">服务器名称或地址,本地用“.”表示</param>
/// <param name="userId">登录数据库帐号(sa)</param>
/// <param name="password">密码</param>
/// <param name="databaseName">数据库名称</param>
/// <returns>返回Entity连接字符串,在DbContext继承类中要使用</returns>
private static string EntityConnectionString(string serverName, string userId, string password, string databaseName, bool isWindowsAuthor = false)
{
// 初始化程序的连接字符串生成器。
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();
//数据源属性.
sqlBuilder.DataSource = serverName;//服务器名称或地址
sqlBuilder.InitialCatalog = databaseName;//数据库名称
sqlBuilder.IntegratedSecurity = isWindowsAuthor;//false是sa登录,true为windows认证
sqlBuilder.UserID = userId;//用户名sa
sqlBuilder.Password = password;//密码
sqlBuilder.MultipleActiveResultSets = true;//维护多个活动集,Trusted_Connection=yes;
//构建SqlConnection连接字符串.
string providerString = sqlBuilder.ToString();
//初始化EntityConnectionStringBuilder.
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
//设置Provider
entityBuilder.Provider = "System.Data.SqlClient";
// 设置连接字符串
entityBuilder.ProviderConnectionString = providerString;
// 设置元数据(从App.config的数据库连接字符串复制过来的元数据)
entityBuilder.Metadata = "res://*/DB.Model1.csdl|res://*/DB.Model1.ssdl|res://*/DB.Model1.msl";
return entityBuilder.ToString();
}
#endregion
}
数据库上下文构造函数(****.Context.tt下的cs文件)修改成:
public DBEntities(string connect)
: base(connect)
{
}
使用方法:
string SQLConnection = EFConnection.GetConnection(".", "sa", "123456", "DB",false);
using (var db = new DBEntities(SQLConnection))
{
//数据库相关操作
}
如果实在不幸无法使用请使用下面方法:
从App.config中把连接字符串复制过来删除不必要的东西,如下:
string str = "metadata=res://*/DB.Model1.csdl|res://*/DB.Model1.ssdl|res://*/DB.Model1.msl;provider=System.Data.SqlClient;provider connection string='data source=.;initial catalog=DB;user id=sa;password=123456;MultipleActiveResultSets=True;'";
动态更改里面的对应值直接使用即可。