【问题标题】:Updating Connection String in DLL from Winforms - Linq to SQL从 Winforms 更新 DLL 中的连接字符串 - Linq to SQL
【发布时间】:2014-04-04 19:27:13
【问题描述】:

我开发了一个使用 Linq To Sql 与数据库通信的类库。

当我添加这个时,我使用服务器资源管理器添加了一个数据库和我想与之交谈的所有表。

然后它为我构建了一个 .dbml 文件。

在“Designer”文件中我可以看到:

public TPDataContext() : 
            base(global::TPAPI.Properties.Settings.Default.TruePotentialConnectionString, mappingSource)
    {
        OnCreated();
    }

如果我更新“Linq to SQL”,它会重新生成一个新的 Designer.cs 文件

它将连接字符串存储在Settings.settings中,范围为“应用程序”。

所有功能都很好。

但是,我随后添加了一个需要更改此设置的 winfoms 项目。所以我添加了以下代码:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["TPAPI.Properties.Settings.TruePotentialConnectionString"].ConnectionString = txtConnectionString.Text;
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");

这会更新 dll 中的连接字符串,但它仅在应用程序关闭并重新启动时生效。

当我升级客户端时,它会覆盖用户之前使用时输入的内容。

我似乎无法找到最好的方法:

  1. 升级应用时不覆盖之前用户定义的连接字符串。
  2. 能够保存新的连接字符串并使用它,而无需停止/启动应用程序。

读过其他线程后,看来 dll 中实际上不应该有任何“本地”设置(?),它们都应该由 winforms 应用程序发送。但是,我不清楚如何在 dll 中使用 Linq to Sql 而不自动查找/添加它自己的连接字符串。

有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: c# winforms linq-to-sql


    【解决方案1】:

    我决定重写我所有的 DataContext 调用以接受连接字符串参数。

    我不得不修改和测试大约 40 个函数,但现在连接字符串作为用户设置存储在 winforms 应用程序中,并覆盖了 Linq to SQL 生成的默认连接字符串。

    所以,现在在我的 dll 中,它现在看起来像

    TPDataContext db = new TPDataContext(connStr);
    

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多