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

我对 lambda 表达式不太熟悉,但我认为你可以这样做:

 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 的限制,而是一种安全功能,可确保您不会插入具有两个不同 ID 的同一个对象。因此,要实现您想要做的,只需创建一个新对象并将新创建的对象添加到数据库中。

** 这个问题经常发生在循环内部。如果您使用的是 while 或 foreach 循环,请确保将 New Created Object 置于循环体中。

尝试这个:

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