6

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

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

但似乎如果我从该部分中删除连接字符串(将其留空),或完全删除该部分,DataSet 代码生成工具就会崩溃。然而,如果我删除它们,当我将它放在另一个项目中时,DataSet 会发牢骚,因为它找不到这些连接字符串的设置。

有什么方法可以告诉类型化的 DataSet 不要担心任何连接?(显然,如果我更改任何 TableAdapter SQL 或存储过程,我将不得不给它一个连接,但这应该是我的问题。)

4

5 回答 5

2

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

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

如果您找到了使其工作的方法,请在此处发布。目前,我将连接字符串存储在 xsd 文件中,并确保我没有存储密码。然后,当我使用它的代码时,我总是创建自己的连接并且从不使用存储在数据集中的连接。

于 2008-11-25T22:27:16.417 回答
1

在类似的情况下,我将数据集的连接字符串存储在设置文件/app.config(Visual Studio 中创建数据集时的默认行为)中,并与本地开发数据库集成了安全性。为了能够从外部项目访问它,我将设置文件更改为public默认值internal(在可视化设计器中)。这导致代码如下(在 Properties\Settings.Designer.cs 中):

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"]));
        }
    }
}

然后我手动修改了属性以包含一个公共设置器:

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

最后,我设置了来自外部项目的连接字符串,例如:

MyDataAccessLibrary.Properties.Settings.Default.MyConnectionString = ...
于 2009-05-13T18:43:05.633 回答
0

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

其次,如果您<connections>从 xsd 中删除该部分,它肯定会引发错误,因为它不仅在运行时使用,而且 Visual Studio 数据集设计器在设计时也使用它来获取底层数据库的数据库模式,以便您可以在设计器中设计类型化数据集。所以<connections>最好为数据集设计者服务!:)

于 2009-05-13T19:19:25.213 回答
0

使用 TableAdapterManager 可能对您有用。请阅读更多内容:http ://rajmsdn.wordpress.com/2009/12/09/strongly-typed-dataset-connection-string/

于 2009-12-11T14:49:15.720 回答
0

要回答你的问题,

您不必在连接字符串中指定数据库名称即可使数据集 IDE 正常工作。您只需要指定一个工作服务器。

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

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

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

于 2010-05-25T23:47:52.007 回答