0

変更しようとしたときにエンティティ フレーム ワークを使用して rm.StatusId = 3; いると、タイトルの質問エラーが発生します。また、asp .net コントロールを使用したエンティティ フレームの動作に関するすべてを知るためのリンクを教えてください。

if (chk.Checked == true)
{
   MAtt_RequestMaster rm =
      ctx.MAtt_RequestMaster.SingleOrDefault(p => p.AutoID ==id);
   rm.StatusId = 3;
   ctx.SaveChanges();
}
4

2 に答える 2

0

私はラムダ式にあまり慣れていませんが、これを行うことができると思います:

 MAtt_RequestMaster rm =
  ctx.MAtt_RequestMaster.SingleOrDefault(p => p.AutoID ==id);

rm.YourStatusTable = (from x in ctx.YourStatusTable
                     where x.statusID == 3
                       select x).FirstOrDefault();

ctx.SaveChanges();
于 2012-05-26T14:51:05.143 に答える
0

この問題は、同じオブジェクトを複数回参照しているために発生します。これは EF の制限ではなく、2 つの異なる ID を持つ同じオブジェクトを挿入しないようにするための安全機能です。したがって、あなたがやろうとしていることを達成するには、新しいオブジェクトを作成し、新しく作成したオブジェクトをデータベースに追加するだけです。

** この問題はループ内でよく発生します。while または foreach ループを使用している場合は、新しい作成されたオブジェクトがループ本体内にあることを確認してください。

これを試して:

MAtt_RequestMaster rm = new Matt_RequestMaster();
rm.StatusId = 3;
ctx.MAtt_RequestMasters.Attach(rm);
ctx.SaveChanges();
于 2012-09-13T02:06:09.697 に答える