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)。