代码之家  ›  专栏  ›  技术社区  ›  Ryan Lundy

类型化数据集连接-需要在.xsd文件中有一个连接吗?

  •  5
  • Ryan Lundy  · 技术社区  · 17 年前

    在.NET中类型化数据集的.xsd文件中,有一个 <Connections> 节,其中包含我用于设置DataTables和TableAdapter的所有数据连接的列表。

    有些时候我不想让它们在那里。例如,有时我更喜欢将连接字符串传递给自定义构造函数并使用它,而不是在settings、.config等中查找连接字符串。

    但是,如果我从该部分删除连接字符串(将其保留为空),或者完全删除该部分,数据集代码生成工具就会崩溃。如果我 不要 如果删除它们,当我将数据集放在另一个项目中时,它会抱怨,因为它找不到这些连接字符串的设置。

    问题。)

    5 回复  |  直到 17 年前
        1
  •  2
  •   codeConcussion    17 年前

    这也困扰了我很长时间,我最近做了一些测试。这是我想到的。作为记录,我使用的是VS2008SP1。

    • 数据集集合 存储连接字符串信息,无论您是否希望。
    • 确保数据集不会在其连接字符串中存储密码。
    • 您可以将连接字符串存储在.xsd文件的“连接”部分,也可以将其存储在app.config文件中,并从.xsd文件的“连接”部分引用。无论哪种方式,“连接”部分似乎都是一项要求。

        2
  •  1
  •   Ole Lynge    17 年前

    在类似的情况下,我将数据集的连接字符串存储在设置文件/app.config(创建数据集时在Visual Studio中的默认行为)中,并集成了本地开发数据库的安全性。为了能够从外部项目访问此文件,我将设置文件更改为 public internal

    public sealed partial class Settings
    {
        [...]
        [global::System.Configuration.DefaultSettingValueAttribute
                ("Data Source=.;Initial Catalog=MyDb;Integrated Security=True;")]
        public string MyConnectionString
        {
            get
            {
                return ((string)(this["MyConnectionString"]));
            }
        }
    }
    

    然后,我手动修改了该属性,以包括一个公共setter:

    public string MyConnectionString
    {
        get
        {
            return ((string)(this["MyConnectionString"]));
        }
        set
        {
            this["MyConnectionString"] = value;
        }
    }
    

    最后,我从外部项目设置连接字符串,如:

    MyDataAccessLibrary.Properties.Settings.Default.MyConnectionString = ...
    
        3
  •  0
  •   this. __curious_geek    17 年前

    最好的方法是在运行时使用首选连接字符串创建连接,并将其分配给TableAdapter.connection。这在过去对我很有效。

    第二,如果你移除 <connections> <连接>

        4
  •  0
  •   Raj Kashyap    16 年前

    使用TableAdapterManager可能适合您。详情请浏览: http://rajmsdn.wordpress.com/2009/12/09/strongly-typed-dataset-connection-string/

        5
  •  0
  •   Carter Medlin    16 年前

    回答你的问题,,

    我们使用以下连接字符串指向本地服务器,而不指定数据库。

    <add name="MyConnectionString" connectionString="data source=.;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
    

    这将允许您使用数据集、更改查询、编辑/删除列,而无需连接到实际数据库。有些功能仍然需要您指定一个数据库,但您可以做的比以前多得多。试试看。