1

共通キーに基づいて複数のテーブルからデータセットにデータを読み込むバッチ プロセスがあります。次に、同じキーでクエリを実行する宛先データの 2 つ目のデータセットを作成します。

この時点で、(テーブル/列レイアウトの観点から) 構造的に同一の 2 つのデータセットがあります。次に、ソースに存在する行を宛先データセットに追加するプロセスがあります。さらに、プロセスは共通キーに基づいて特定の列の更新も試みます。

更新する必要がある既存の行で DataAdapter.UPDATE コマンドが呼び出されると、問題が発生するようです。エラー: System.InvalidOperationException は処理されませんでした Message="SELECT ステートメントで指定されたテーブルに一意のキー列または識別子列が含まれていないか、SELECT ステートメントにすべてのキー列が含まれていません。"

宛先 DB の PK を制御する方法がないため、この特定の更新のキーが何であるかをアダプタに伝える方法はありますか? データセット内の各 DataTable の主キーを「カスタム」に設定しました。

これは非ユーザー インターフェイスのバッチ プロセスであり、そのパフォーマンス要件は非常に低くなります。(データセットの使用方法などを説明するため)

何かご意見は?

4

2 に答える 2

1

データベースをプロファイリングし、どのクエリが起動されているかを確認します。Profiler からクエリをコピーし、手動で実行してみてください。それらが失敗した場合、問題はSQLにあり、エラーはデータベースから来ており、単にアプリケーションに渡されています.

これは、問題がデータベース内の実際の PK の欠如によって引き起こされているかどうかを少なくとも教えてくれるはずです。

于 2009-01-18T08:14:30.690 に答える
0

行ったように、データセット内の各テーブルに PK を設定する必要があります。アダプターが PK 自体を把握する方法はないと思います。もし存在し、誰かがそれを知っているなら、私はすべての耳です。

于 2008-11-10T17:17:08.287 に答える