XSD DataSet - 在设计时和运行时使用来自另一个项目的连接字符串

时间:2013-04-09 18:08:03

标签: asp.net connection-string strongly-typed-dataset design-time multiple-projects

我们有一个VS2010解决方案,其中包括一个Web应用程序(启动项目)和一个用于数据访问的类库。连接字符串存储在web应用程序的connectionString.config中,该文件在Web应用程序的web.config中引用。类库中的现有代码使用System.Data.SqlClient来命中数据库。此代码通过以下方式获取连接字符串:

ConfigurationManager.ConnectionStrings["OurDbName"].ToString();

类iibrary中没有连接字符串设置,因此在运行时,它会从Web应用程序的配置中提取连接字符串。

我想添加" visual" xsd数据集到类库。但是,要这样做,您需要在设计时定义连接字符串,并且设计器无法识别Web应用程序中的运行时默认配置。因此,就目前的情况而言,要在类库中创建和使用xsd数据集,我需要在那里定义一个单独的连接字符串(通过项目的“设置”窗口)。至少我是这样做的,如果我想要数据集设计器中的拖放和上下文菜单功能。

我知道如何在运行时设置连接字符串。在设计期间,我尝试过的几种方式都没有。

是否有办法在数据访问类库以外的地方定义连接字符串,但在设计时仍然可以将类连接用于类库中的xsd数据集?

我认为第一个明显的答案是在数据访问类库中进行连接配置,如果需要,其他项目在那里引用它。不过,我现在还不能保证这是一个选择。

谢谢!

1 个答案:

答案 0 :(得分:1)

  

“有没有办法在除了之外的地方定义连接字符串   数据访问类库仍然具有可用的连接   在设计时到类库中的xsd数据集?“

[知道这是一个老线程,但我有同样的问题,并没有在其他任何地方找到完整的答案......所以,以备将来参考...]

我发现具有XSD设计器优势并能够更改分段和生产的连接设置的最佳方法如下:   - 注意:这适用于VS 2012 ...认为它也应该在2010年   - 此外,DataSets是通过从服务器资源管理器中拖动来创建的,它将类连接信息保存在类库app.config和在设计时使用的Properties.Settings.settings中。

1)对于每个DataTable,单击TableAdapter标题(在属性下方和方法上方)并查看属性 2)将连接修饰符更改为公共 3)然后,访问表的代码应该类似于以下内容(其中类库名为DALib)...

using DALib;
using System.Web.Configuration;

PriceData.averageSalePriceFDataTable priceTable;
DALib.PriceDataTableAdapters.averageSalePriceFTableAdapter priceAdapter
  = new DALib.PriceDataTableAdapters.averageSalePriceFTableAdapter();

priceAdapter.Connection.ConnectionString 
  =  WebConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString;

priceTable = priceAdapter.GetData( ... parameters ...);

这使用类库中的连接字符串进行设计,并在运行时从Web.config中选择它。