1

私はADO.NETデータプロバイダーと関連するDDEXプロバイダーの開発に取り組んでいます。Visual Studio TableAdapater構成ウィザードにSQLステートメントを生成して、挿入および更新後にデータテーブルを更新するように説得できません。挿入ステートメントと削除ステートメントを生成しますが、更新を行うための選択ステートメントは生成しません。

参照されている機能にアクセスするには、サーバーエクスプローラー(Visual Studio内)からデータセット(DataSet1.xsdなど)にテーブルをドロップします。TableAdapterオブジェクトを作成し、SELECT、UPDATE、DELETE、およびINSERTステートメントを構成します。TableAdapterオブジェクトを右クリックすると、コンテキストメニューに[構成]オプションが表示され、[TableAdapter構成ウィザード]が起動します。そのウィザードの最初のダイアログには[詳細オプション]ボタンがあり、[データテーブルの更新]というタイトルのオプションが表示されます。SQL Serverテーブルで使用する場合、このオプションを使用すると、TableAdapterのInsertCommandおよびUpdateCommandのコマンドの最後に「selectfield1、field2、…」という形式のステートメントが追加されます。

Visual Studioでこれらの更新ステートメントを更新/挿入コマンドに追加するために、DDEXプロバイダー(またはADO.NETデータプロバイダー)からどのタイプのプロパティまたはインターフェイスを公開する必要があるかを知っていますか?

[高度なSQL生成オプション]ダイアログボックスのMSDNドキュメントには、「データテーブルの更新は、SQLステートメントのバッチ処理をサポートするデータベースでのみサポートされています」という注記があります。これは、.NETデータプロバイダーがそのような動作がサポートされていることを示すいくつかのプロパティを公開する必要がある可能性があることを意味しているようです。しかし、私はそれを見つけることができません。何か案は?

4

1 に答える 1

0

TableAdapter の更新機能は、操作が完了した後、tableadapter 操作に関連付けられたデータ テーブルのデータが更新されることを意味します。

tableadapter の insert メソッドを呼び出し、挿入操作のために datarow または datatable を渡すと、tableadapter は datatable/datarow を更新して、挿入操作の後にデータベースからの最新の値を反映します。データベース内のテーブルが、挿入する特定の行の挿入コマンドに対して一意の ID または自動番号を生成している場合、元のデータ行の p.key 列には、データベースからの自動生成 ID 値が反映されます。ウィザード構成で更新オプションを true に設定している場合、この更新は tableadapter によって処理されます。

この 'refresh' tableadapter では、1 つのバッチで 2 つのクエリが実行されます。最初は Insert で、次に scope_identity で選択されます。

編集

TableAdapter で Refresh がオフになっている場合、デフォルトの Insert コマンドはこの単一の SQL を起動します。

INSERT INTO Table (coloumns) VALUES (values);

ただし、TableAdapter で Refresh がオンになっている場合、デフォルトの Insert コマンドはこれらの SQL ステートメントのバッチを起動します。Insert() に引数として渡されるデータ行も、正常に実行された後に更新されます。

INSERT INTO Table (coloumns) VALUES (values);

SELECT coloumns FROM Table WHERE (PKeyID = SCOPE_IDENTITY())
于 2010-04-30T14:28:36.150 に答える