0

私の DB には、一意のインデックスとして定義された列があります。DB から EF モデルを生成しました (この一意性がどのようにモデルに変換されたのかわかりません。これを確認するにはどうすればよいですか?)。
を使用してレコードのこのフィールドを更新しようとすると

entity.Users.ApplyCurrentValues(user);

次のエラーが表示されます。

提供されたオブジェクトのキーと一致するキーを持つオブジェクトが ObjectStateManager で見つかりませんでした。提供されたオブジェクトのキー値が、変更を適用する必要があるオブジェクトのキー値と一致することを確認してください。

一意の (プライマリではない!) フィールドを更新するにはどうすればよいですか?

4

1 に答える 1

0

user何が起こっているのかをより明確に把握するには、オブジェクトをどこから取得しているかを判断するためのコードをさらに確認する必要があります。

ApplyCurrentValues既に存在するオブジェクトに加えられた変更を更新するために使用されると思いますObjectContext。最初にコンテキストからインスタンスを取得しなかった場合user、上記のエラーが発生します (エラーは、更新しようとしているオブジェクトが見つからないことを示しています)。

MSDN :Copies the scalar values from the supplied object into the object in the ObjectContext that has the same key.

それがデタッチされたオブジェクトである場合、またはこのコンテキストからロードして、取得したオブジェクトで使用できる場合がありAttach()ます。useruserApplyCurrentValues

于 2013-07-07T23:38:14.573 に答える