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

LINQ更新:找不到行或行已更改,
public bool AddCaseType(casetype_tbl casetype)
  {
  var aaa1 = db.GetChangeSet();
  var aad1 = aaa1.Deletes;
  var aai1 = aaa1.Inserts;
  var aa21 = aaa1.Updates;//【这个地方这3个都是0】

  if (casetype.typename == "")
  {
  return false;
  }
  else if (casetype.typenamechild == "")//typename不能重复
  {
  int c = db.casetype_tbl.Count(p => p.typename.Trim().Equals(casetype.typename) && p.typenamechild == "");
  if (c > 0)
  {
  return false;
  }
  }
  else//不能重复
  {
  int c = db.casetype_tbl.Count(p => p.belongs.Trim().Equals(casetype.belongs) && p.typename.Trim().Equals(casetype.typename) && p.typenamechild.Trim().Equals(casetype.typenamechild));
  if (c > 0)
  {
  return false;
  }
  }

  var aaa = db.GetChangeSet();
  var aad = aaa.Deletes;
  var aai = aaa.Inserts;
  var aa2 = aaa.Updates;//【这个地方updates就变成1了,然后已提交就提示:找不到行或行已更改】
  //【这个updates的对象是我以前改过的,但是在改的时候就已经SubmitChanges过了,到这里不知道为什么又出来了】
  db.casetype_tbl.InsertOnSubmit(casetype);
  db.SubmitChanges();
  return true;
  }

上面标【】的地方麻烦帮我看下

------解决方案--------------------
此方法内的db 和你调用此方法前的db是不是同一个定义的 db?


GetChangeSet 可能具有副作用,如通常在 SubmitChanges 时执行的插入和删除操作的推理。 例如,在以下操作中使用的对象可创建下表中相应的推断操作:

Add 映射到 InsertOnSubmit。

EntityRef<TEntity> 赋值为 null(可能由于 Remove 映射到 DeleteOnSubmit)。