0

データセットがあり、デザイナーの各 dataTable の下にテーブル アダプターがあります。したがって、add->query を dataTable に追加し、ストアド プロシージャを選択して、以下のテーブル アダプタ セクションにリストすることができます。また、テーブル アダプターを選択し、その選択/挿入/更新/削除コマンドをストアド プロシージャに設定することもできます。

私の質問は、違いは何ですか?さらに重要なことに、クエリまたはコマンドがいつ呼び出されるかをどのように知ることができますか?? (パラメータを別の方法で設定でき、パラメータが正しく機能しないため、知る必要があります)

たとえば、これがどれを使用しているかをどのように知ることができますか?

    private void saveToolStripButton_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.permitInfoLinksBindingSource.EndEdit();
        this.linksTableAdapter.Update(this.dataSet1);
    }

Environment.UserName.ToUpper()以下は、環境変数を使用してストアド プロシージャを適切に呼び出しているようです...しかし、 SourceColumn の下の「パラメーター コレクション エディター」に入れようとすると、代わりに null が送信されます。

this.linksTableAdapter.spInsertLink(Environment.UserName.ToUpper(), fkPermitInfoID, 
fPath, ref ident);
4

1 に答える 1

1

このMSDNからの抜粋は役に立ちますか?

TableAdapter は、データ コマンドを使用してデータベースの読み取りと書き込みを行います。TableAdapter の最初の Fill (メイン) クエリは、関連するデータ テーブルのスキーマを作成するための基礎として使用されるほか、TableAdapter.Update メソッドに関連付けられた InsertCommand、UpdateCommand、および DeleteCommand コマンドも使用されます。つまり、TableAdapter の Update メソッドを呼び出すと、TableAdapter が最初に構成されたときに作成されたステートメントが実行され、TableAdapter クエリ構成ウィザードで追加された追加のクエリは実行されません。TableAdapter を使用すると、通常実行するコマンドと同じ操作が効果的に実行されます。たとえば、アダプタの Fill メソッドを呼び出すと、アダプタは SelectCommand プロパティでデータ コマンドを実行し、データ リーダーを使用します (たとえば、SqlDataReader) を呼び出して、結果セットをデータ テーブルに読み込みます。同様に、アダプターの Update メソッドを呼び出すと、データ テーブル内の変更された各レコードに対して (UpdateCommand、InsertCommand、および DeleteCommand プロパティで) 適切なコマンドが実行されます。

私が理解している限り、これら*Commandは定型クエリですが、表の下にあるものは、より複雑なニーズに合わせて自分で作成したより具体的なカスタムのものであるため、コマンドを使用すると、より複雑なパラメーターをクエリに渡すことはできません。

また、このことから、更新などの基本的なアクションを呼び出すと、後で定義されたクエリではなく、デフォルトのコマンドが実行されると推測されます。

私はテーブルアダプターを簡単に扱っただけで、それらの知識は非常に浅いです(それを見つけたらすぐにエンティティフレームワークに移行しました)ので、このアンサーナイトはあまり価値がありません...

于 2012-11-13T00:41:38.857 に答える