当我尝试修改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();
}
答案 0 :(得分: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();
答案 1 :(得分:0)
发生此问题的原因是您多次引用同一个对象。这不是EF的限制,而是一种安全功能,可确保您不会插入具有两个不同ID的同一对象。因此,要实现您要执行的操作,只需创建一个新对象并将新创建的对象添加到数据库中。
**这个问题经常发生在循环中。如果您正在使用while或foreach循环,请确保将新创建的对象INSIDE循环体。
试试这个:
MAtt_RequestMaster rm = new Matt_RequestMaster();
rm.StatusId = 3;
ctx.MAtt_RequestMasters.Attach(rm);
ctx.SaveChanges();