强类型数据集的动态连接字符串

6
我有一个asp.net nTier应用程序。数据访问层是由多个DataTable和DataAdapters组成的强类型DataSet。当用户登录时,他们可以选择连接哪个数据库(从成员身份数据库中的表中选择)。我需要将所选的连接字符串传递给DataSet对象,该对象将保持不变,直到用户再次登录。
我认为答案可能是创建DataSet对象的部分类,我可以将连接字符串传递到构造函数中。但我不确定如何去做。
干杯
2个回答

4
你可以使用部分类来实现这个功能。
假设你的类型化数据集名称为HurrDurr:
public partial class HurrDurr
{
  public HurrDurr(string connex)
  {    
    this._connection = new global::System.Data.SqlClient.SqlConnection();
    this._connection.ConnectionString = connex;
  }
}

仅当首次访问Connection内部属性时,如果为空,则初始化_connection。


威尔,我在vb.net中尝试了你的建议,但是出现了一个错误:“错误33 _connection'不是DAL.ds1的成员”。你有什么想法我错在哪里了吗? - SausageFingers
@fly 我不知道.ds1文件是什么。您可以查看由类型化数据集工具创建的代码(展开xsd并查看代码文件)。VB版本可能会将连接保存在不同的变量名中。 - user1228
抱歉,我应该表达得更清楚。DAL.ds1指的是项目名称“DAL”和数据集名称“ds1”。 “ds1”是从xsd生成的类,我认为这就是您所说的HurrDurr。在查看代码后,我确实看到了表适配器中的_connection成员变量?这是我需要创建部分类的内容吗? - SausageFingers
你需要创建一个 public partial class ds1,并在构造函数中使用你的新连接字符串创建一个 SqlConnection,并将其分配给 _connection。 - user1228

3

终于找到了问题的原因。在我创建一个新模块时,我为表适配器创建了一个部分类,这是我需要更改连接字符串的地方,最初我犯的一个错误是没有指定正确的命名空间。

下面是我创建的部分类,它允许我动态更改tblOptions表的一个表适配器的连接字符串:

Namespace ds1TableAdapters
    Partial Public Class tblOptionsTableAdapter
        Sub ChangeConnString(ByVal newConn As String)
            Me._connection.ConnectionString = newConn
        End Sub
    End Class
End Namespace

感谢你的帮助,Will,让我朝着正确的方向前进了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接