1

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

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

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

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

我知道如何在运行时设置连接字符串。我尝试过的几种方法在设计时都不可用。

有没有办法在数据访问类库之外的某个地方定义连接字符串,但在设计时仍然可以连接到类库中的 xsd 数据集?

我认为第一个明显的答案是在数据访问类库中进行连接配置,并在必要时让其他项目在那里引用它。不过,我目前无法保证这是一种选择。

谢谢!

4

1 回答 1

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 中选择它。

于 2013-08-04T12:51:51.123 回答