WPF C#动态配置EF连接字符串

参考连接: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;'";

动态更改里面的对应值直接使用即可。

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值