Linq-to-sql オブジェクトのすべての値を手動でリセットすることなく、完全に新しく生成された POCO を使用して、optimizedSearch レコードのすべての値を更新しようとしています。これを行うには、null にしたくない値を設定してから、次のように呼び出します。
if (person.xosPodOptimizedSearch == null)
{
person.xosPodOptimizedSearch = record;
}
else
{
context.xosPodOptimizedSearches.Attach(record, true);
context.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, record);
}
このコードの目的は、レコードにperson
レコードがない場合xosPodOptimizedSearch
に追加することです。その人が既に持っている場合は、作成したばかりの POCO にある値で更新したいと思います。
ただし、これ.attach(record, true)
が実行され、Linq-to-sql が実行されると、 がスローされますDuplicateKeyException occurred: Cannot add an entity with a key that is already in use
。これは、レコードが存在することを知っているため、愚かattach()
です.InsertOnSubmit()
。
そのレコードの DB 内の値を使用せずに、生成した値でデータを 100% 更新するにはどうすればよいですか?