2012-01-10 5 views
0

私はスケジューリングアプリケーションを作成しています。データベーステーブルの各行は、ある特定の時刻に異なるタスクを実行しています。私のアプリケーションでは、この情報を取り出し、それぞれのタスクを別のオブジェクトに格納し、それらをリストに保管しておきます。データベーステーブルとC#オブジェクト配列の同期

現在のところ、これをリフレッシュするために関数を実行すると、チェックは行われず、すべてを再度追加するだけです。私は、特定のジョブにオブジェクトがすでに存在するかどうかを確認し、そうでない場合は新しいオブジェクトを作成する最良の方法を見つけ出す必要があります。

行のIDを確認し、各現在のタスクオブジェクトが存在するかどうかを調べるのが最善の方法でしょうか?私の主な関心事は、Auto Increment ID値が欠損値を置き換えるかどうかわかりません。で、IDが1,2,3,4,5の行があり、ある時点でID 3の行が削除された場合、次の行が3になるか、または6になりますか?

答えて

0

Keyはint、Valueはオブジェクトのタイプ(Taskなど)のDictionaryにオブジェクトを格納できます。あなたは、キーを使用して辞書からタスクを引くことができます:IDSの自動インクリメントについては

Dictionary<int, Task> dict = new Dictionary<int, Task>(); 

// Code to do first-time initialise of the dictionary 
.... 

// Subsequent refresh 
Task task; 
if (!dict.TryGet(id, out task)) 
{ 
    task = new Task(); 
    task.Id = id; 
    ... 
    dict.Add(id, task); 
} 

、最後の値が割り当てられたとして、RDBMSが新しい行の値を設定している可能性があり+ 1

0

通常、自動インクリメントIDは増加しますが、再作成しません(データベースは常に+1されますが、古いIDが解放されたかどうかは戻ってきません)。 SQLサーバーのマニュアルを参照して確認するか、確実にテストしてください。

あなたの最良の賭けはあなたのコレクションのオブジェクトをチェックすることです。私があなたが述べたように、価値を追加する前にIDの価値がコレクションに存在しないことを保証します。

関連する問題