【问题标题】:Change connection string during runtime在运行时更改连接字符串
【发布时间】:2017-11-17 12:26:06
【问题描述】:

我使用实体框架创建了 wpf 应用程序(数据优先) 现在连接字符串已自动创建应用配置

但我想从放置在 C 驱动器中的文本文件中获取连接字符串

【问题讨论】:

  • 为什么你同时标记了 ef 和 ado.net ?

标签: c# sql wpf entity-framework ado.net


【解决方案1】:

替换上下文文件中的 Method1() 方法

 public Method1()
            : base("name=DB_Entities" )
        {

        //}

         public Method1()

        {
            this.Database.Connection.ConnectionString = GlobalVariable.Conn;
        }

您可以将 GlobalVariable.Conn 替换为您的连接字符串或创建 Globalvaliable 类文件并从中获取。

【讨论】:

    【解决方案2】:

    您可以在运行时更改连接字符串,如下所示: Entity Framework change connection at runtime

    但是你需要修改上面链接第一个答案中的代码:

     var configNameEf = string.IsNullOrEmpty(configConnectionStringName)
     ? source.GetType().Name 
     : configConnectionStringName;
    
            // add a reference to System.Configuration
            var entityCnxStringBuilder = new EntityConnectionStringBuilder
                (System.Configuration.ConfigurationManager
                    .ConnectionStrings[configNameEf].ConnectionString);
    

    到:

     var cString = File.ReadLines(@"c:\nameofyourfilewithconnectionstring.txt").FirstOrDefault();
    if (cString !=null)
    {
    var entityCnxStringBuilder = new EntityConnectionStringBuilder(cString);
    ...
    }
    

    【讨论】:

      【解决方案3】:

      对我来说(我试图改变数据实体框架模型的数据库的来源),最快的解决方案(但不是无风险的)是

      '''

              string s = File.ReadAllText("./CheckCenter.exe.config");
              s = Regex.Replace(s, "(?<=data source=)(.*)(?=;initial catalog=)", newIp+ ",1433");
              File.WriteAllText("./CheckCenter.exe.config", s);
      

      '''

      希望对你有所帮助^_^

      【讨论】:

        猜你喜欢
        • 2019-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-30
        • 1970-01-01
        • 2020-01-04
        相关资源
        最近更新 更多