私たちは2つの部分からなるアプリケーションを構築してきました。 サーバー側: WCFサービス、クライアント側: MVVMパターンに従ったWPFアプリ
そのため、データベースジョブを実行するために自己追跡エンティティも使用していますが、苦労しています。
コード例は次のとおりです。
public bool UpdateUser(User userToUpdate)
{
using (DBContext _context = new DBContext())
{
try
{
userToUpdate.MarkAsModified();
_context.Users.ApplyChanges(userToUpdate);
_context.SaveChanges();
return true;
}
catch (Exception ex)
{
// LOGS etc.
return false;
}
}
}
したがって、クライアントからこの関数を呼び出すと、次の例外が発生します。
オブジェクトのキー値がObjectStateManager内の別のオブジェクトと競合しているため、AcceptChangesを続行できません。AcceptChangesを呼び出す前に、キー値が一意であることを確認してください。
「User」エンティティには、1つの「many-to-1..0(UserType)」と5つの「0..1-to-many」の関連付けがあります。そして、その「UserType」には「多対多(モジュール)」の関連付けがあります。
この関数にUserインスタンスを送信すると、UserTypeがそのモジュールに含まれます。
この問題を解決するために私を導くことができれば、それは素晴らしいことです。
ありがとうございました。