从会话中为表适配器分配连接字符串

时间:2008-12-13 07:39:32

标签: c# asp.net xsd

我的应用程序已经开发,现在我们将更改会话对象中存储的连接字符串(分布式数据库管理系统(DDBMS)的Bcoz)

问题在这里.....

In that application There are so many **ObjectDataSource** which are
     

使用 .XSD 进行初始化   文件。这与...有关    TableAdapter 以及 TableAdapter 的连接字符串   从Web.Config文件中分配。   现在如何更改连接   字符串到会话中存储的任何内容   对象

提前致谢。

4 个答案:

答案 0 :(得分:7)

要在运行时更改XSD的连接,您需要将表适配器的ConnectionModifier属性设置为Public。如果它们是由“向导”创建的,默认情况下它们将被设置为Friend / Internal(VB / C#)。

我无法找到ConnectionModifier属性(它没有在我的vs2005文档中列出)!如果单击XSD的下部区域(查询所在的区域),则应在属性窗口中显示该区域以进行更改。

然后你可以设置Connection属性(它需要一个对象而不是一个字符串),你声明你的表适配器。

答案 1 :(得分:1)

这是我讨厌Typed Datasets的原因之一,实际上也是LinqToSQL的缺点之一(但更容易解决)。

我认为,一旦更改连接字符串,或者进入并“自定义”它们以在运行时使用web.config文件中的连接字符串而不是复制它,您将无法重新生成所有类型的数据集来自web.config的设计时。如果您“自定义”,那么每当您进行任何导致重新创建类型化数据集的更改时,您都必须担心丢失自定义代码。这是利弊。

编辑:我稍微误解了这个问题。解决方案仍然相同,但只有我的第二个提议的解决方案是可行的。您必须自定义TableAdapter代码,然后在对类型化数据集进行更改时小心维护它。

答案 2 :(得分:1)

生成的tabled适配器是一个部分类。这意味着您可以在另一个文件中添加该类的代码。 您可以将表适配器的Connection属性设置为public,并根据需要从客户端代码进行修改。几乎不是一个好的解决方案,但也许是你唯一的解决方案。

答案 3 :(得分:0)

我有一个winforms应用程序,我有类似的问题。我创建了一个包含我的设置(clsGlobal)的静态类,其中一个属性是连接字符串。在我引用数据表的页面中,我将连接字符串设置为clsGlobal.gstrConnectionString或连接字符串属性。在应用程序初始化阶段可能会更好。但是,在app启动时从共享属性设置tableadapter连接字符串可以解决这个问题。

myTableAdapter.Connection.ConnectionString = clsGlobals.gstrConnectionString;

因此,您只需.ToString()您的会话对象并将其分配给ta.Connection.ConnectionString。