代码之家  ›  专栏  ›  技术社区  ›  Thomas_WhoCan'tThinkOfAWittyID

XSD数据集——在设计时和运行时使用来自另一个项目的连接字符串

  •  1
  • Thomas_WhoCan'tThinkOfAWittyID  · 技术社区  · 11 年前

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

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

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

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

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

    是否有一种方法可以在数据访问类库之外的其他地方定义连接字符串,但在设计时仍然可以连接到类库中的xsd数据集?

    我认为第一个显而易见的答案是在数据访问类库中有连接配置,如果必要的话,让其他项目在那里引用它。不过,目前我还不能保证这是一种选择。

    谢谢

    1 回复  |  直到 11 年前
        1
  •  1
  •   Paul Evans    11 年前

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

    [知道这是一个老话题,但我也有同样的问题,在其他地方找不到完整的答案……所以,供未来参考…]

    我发现,利用XSD设计器的优势并能够更改暂存和生产的连接设置的最佳方法如下: -注意:这适用于VS 2012。。。认为2010年也应该如此 -此外,数据集是通过从服务器资源管理器拖动创建的,它将连接信息保存在设计时使用的类库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中提取它。