LINQオブジェクトがデータベースにまだ挿入されていない(新規)か、最後の更新(ダーティ)以降に変更されているかどうかを判断する方法はありますか? WPFを使用してUIをLINQオブジェクトにバインドする予定で、オブジェクトが既にデータベースに存在するかどうかに応じて異なる動作をする必要があります。私は考えることができるLINQ to SQL - 新規/ダーティーオブジェクトの追跡
MyDataContext context = new MyDataContext();
MyObject obj;
if (new Random().NextDouble() > .5)
obj = new MyObject();
else
obj = context.MyObjects.First();
// How can I distinguish these two cases?
のみシンプルソリューションは、負の値に新しいレコードの主キーを(私のPKがIDフィールドであるため、INSERT
上の正の整数に設定されます)を設定することです。これは、新しいレコードを検出するためにのみ機能します。また、ID PKが必要で、新しいオブジェクトを作成するコードを制御する必要があります。
これを行うより良い方法はありますか? context.SubmitChanges()
で何をすべきかを知るために、LINQがこれらのオブジェクトのステータスを内部的に追跡している必要があるようです。その "オブジェクトステータス"にアクセスする方法はありますか?
明確化 明らかに私の最初の質問は混乱していました。私はレコードを挿入または更新する方法を探していません。私は、そのオブジェクトが挿入されていない(新しい)か、最後の更新(汚い)から変更されているかどうかを判断するために、LINQオブジェクトが与えられたときに、方法を探しています。
これは私が探しているものではありません。私はLINQを使用して挿入/更新する方法を知っています。私が必要とするのは、任意のLINQオブジェクトの状態を判断することです。 –