2011-09-17 9 views
0

私は、Visual Studio 2010の構成ウィザードを使用して作成された2つのTableAdapter(1対多の関係)を持つDataSetを持っています。DataSet TableAdapter塗りつぶしメソッド

私は外部ソースを呼び出して、辞書に結果を設定します。これらの結果は、データベース内のすべてのエントリでなければなりません。 DBを同期させるために、すべてのテーブルをクリアしてからテーブルを削除し、SQLで新しいデータを作成するように再作成する必要はありません。

TableAdapter.Fill()メソッドを使用するときれいな方法がありますか、または2つのテーブルを行単位でループして、それが保持されているか削除されてから新しいエントリを追加する必要がありますか?辞書にあるデータを、DataSetを持つ2つのテーブルの唯一のデータにする最良の方法は何ですか?

答えて

0

最初の質問:同じDBの場合、なぜ同じ情報を持つ2つのテーブルがあるのですか?

手元の問題:大部分はサイズに依存します。テーブルが大きくない場合は、トランザクションを使用してテーブルを削除し(DELETE * FROM TABLEなど)、そこにデータを再度書き込んでください。 一方、テーブルが大きい場合、問題は次のとおりです。すべてを辞書にロードできますか?

もちろん、矛盾したデータ(別のユーザー/アプリが辞書内にある間にデータを変更した)がどうなるか自分自身に尋ねなければなりません。

これが長引く場合は、データに行ったことを思い出すことができます。つまり、変更されたデータにフラグを立て、削除されたキーと挿入された新しい行を覚えて、それに基づいて更新します。

どちらも、Filled DataTableを覚えて、これをバッキングフィールドとして使用するか、独自のメカニズムを実装することで実現できます。

どのような意味でも、私は問題を考えることをお勧めします。本当に辞書が必要ですか?データベースを照会してデータを取得するのはなぜでしょうか?または、クイックアクセスのためにデータの一部をキャッシュするだけですか?

PS:あなたの更新方法は、データアダプターは、すべての作業を行います(変更変更、削除削除して新しいデータローを挿入し、それが更新されたDataTable /ので、これは一度だけ動作します設定してください)

+0

私が変更しているデータベースにのみアクセスできます。他のdbはアクティブディレクトリのどこかに来ていて、私はSystem.DirectoryServices APIを介してしかアクセスできないので、結果をハッシュデータ構造に格納しています。データセットにしかアクセスできない場合、SQLを直接使用する方法はありますか? – Ben

+0

あなたはADデータベースに書き込めますか?もしそうなら、なぜonwデータベースを使うのですか(パフォーマンス?)ADのデータベース専門家と協力する方法を見つけることができますか? – Carsten

+0

私はADからのみ読むことができます。主にパフォーマンスのために私の上司が自分のDBを使用する必要があります。それはADに格納されているデータの小さなサブセットですが、ADはマスターデータベースのようなものであり、私はその小さなサブセットを模倣しているため、書きたいとは思いません。 – Ben

0

それテーブル全体を再投入するのは、繰り返し実行して、どのレコードが移動/滞在するかを判断するよりも迅速に行うことができます。 SQL文を使用してレコードが削除されているかどうかを判断するプロセスを実行できませんか?データベースからデータセットにアクセスしないようにするには(アクティブな場合= falseのテーブルから削除する)

日付フィールドがあり、データベースを「プール」した日以降に追加されました(アクティブ* =>と#12:30#のテーブルからselect *)

+0

DataTableクラスとDataRowクラスで新しいテーブルを作成し、それをFillメソッドに渡す方が簡単かもしれないと思っていましたか?私はこれを行うSQL文を考えようとしていますが、アクティブな列を調べるよりも複雑になります。私はグループのテーブルを持っていて、グループに所属するメンバーのテーブルを持っています。 – Ben

+1

@Ben SQLは強力なデータ操作言語であり、選択したフィールドから簡単にテンポラリテーブルを作成したり、他のテーブルを互いに追加したりすることもできます...多分、一歩後退してより大きな画像を見る必要がありますか? – spacemonkeys

+0

願い私は上司や他のチームのメンバーが私にこのようにする必要があります。 – Ben

関連する問題