0

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% 更新するにはどうすればよいですか?

4

1 に答える 1

0

気にしないでください、これは私のエラーです。Linq-to-sql を混乱させていたのは、コードの前半で迷子のrecord.xosPerson = person;呼び出しがあったためです。そのため、person レコードが新しいレコードに関連付けられていると考えられ、古いレコードが存在することを忘れていました。

于 2012-04-20T15:12:18.760 に答える