日期:2014-05-20  浏览次数:20911 次

Linq Attach不能更新.
LINQContext _db = new LINQContext();  
 public void SaveUser(LinqToSql.td_Users user)
  {
  try
  {
   
  user.user_Time = DateTime.Now;
  _db.td_Users.Attach(user,true);
  _db.SubmitChanges();
  }
  catch(Exception e)
  {
  MessageBox.Show(e.Message);
  }
  }

第一次更新没有问题,第二次报异常:无法附加已经存在的实体。
怎么回事啊?难道必须得重新生成上下文???

------解决方案--------------------
先查询,再更新.目前我也没有找出好办法.
------解决方案--------------------
单步调试一下,找到错误的代码行分析
------解决方案--------------------
第二次user要重新new,不然还是第一个user,当然就重复了
------解决方案--------------------
如果是更新值,不用_db.td_Users.Attach(user,true);
------解决方案--------------------
Attach 主要在 多个 context 创建的实体时,利用一个实体来保存数据的时候,你这个问题需要检查一下数据库主键设置了没有,能不能标识出这行的唯一性,这样才能顺利保存。