6

.NETの型指定されたDataSetの.xsdファイルには<Connections>、DataTablesとTableAdaptersのセットアップに使用したデータ接続のリストを含むセクションがあります。

そこにそれらを持たせたくない時があります。たとえば、設定や.configなどで接続文字列を探すのではなく、接続文字列をカスタムコンストラクターに渡してそれを使用したい場合があります。

しかし、そのセクションから接続文字列を削除する(空のままにする)か、セクションを完全に削除すると、DataSetコード生成ツールがおかしくなりそうです。一方、それらを削除しないと、DataSetはそれらの接続文字列の設定を見つけることができないため、別のプロジェクトに配置したときに不満を抱きます。

型付きデータセットに接続を気にしないように指示する方法はありますか?(もちろん、TableAdapter SQLまたはストアドプロシージャを変更した場合は、接続を確立する必要がありますが、それが私の問題になるはずです。)

4

5 に答える 5

2

これも長い間私を悩ませてきました、そして私は最近いくつかのテストをしました。これが私が思いついたものです。記録のために、私はVS2008SP1を使用しています。

  • データセット、必要かどうかに関係なく、接続文字列情報を格納します。
  • データセットが接続文字列にパスワードを保存しないようにすることができます。
  • 接続文字列を.xsdファイルの「connections」セクションに保存するか、app.configファイルに保存して、.xsdファイルの「connections」セクションから参照することができます。いずれにせよ、「接続」セクションは要件のようです。

それを機能させる方法を見つけたら、ここに投稿してください。現在、接続文字列を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

TableAdapterManager を使用するとうまくいく場合があります。詳細については、http: //rajmsdn.wordpress.com/2009/12/09/strongly-typed-dataset-connection-string/をご覧ください。

于 2009-12-11T14:49:15.720 に答える
0

これを行う最善の方法は、優先する接続文字列を使用して実行時に接続を作成し、それを TableAdapter.Connection に割り当てることです。これは過去に私のために働いていました。

第 2 に、xsd からセクションを削除する<connections>と、実行時に使用されるだけでなく、設計時にビジュアル スタジオ データセット デザイナーによって基礎となるデータベースのデータベース スキーマをフェッチするためにも使用されるため、確実にエラーがスローされます。デザイナーで型指定されたデータセットを設計できます。<connections>データセットの設計者のそばにいてください! :)

于 2009-05-13T19:19:25.213 に答える
0

あなたの質問に答えるために、

データセット IDE を機能させるために、接続文字列でデータベース名を指定する必要はありません。動作中のサーバーのみを指定する必要があります。

次の接続文字列を使用して、データベースを指定せずにローカル サーバーをポイントします。

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

これにより、実際のデータベースに接続しなくても、データセットの操作、クエリの変更、列の編集/削除を行うことができます。一部の機能では引き続きデータベースを指定する必要がありますが、以前よりも多くのことができるようになります。試してみます。

于 2010-05-25T23:47:52.007 に答える