使用Linq-to-SQL更新记录

And*_*ink 6 c# linq-to-sql

我已经做了很多次这样做了.

我发现的每一个例子都是我所拥有的......

我查询...

var result = from u in tdc.tblUsers
             where u.UserID == userID
             select u;
Run Code Online (Sandbox Code Playgroud)

然后我改变我想要的值:

foreach (tblUsers u in result)
{
     //change values (and no im not changing the primary key or foreign keys)
}
Run Code Online (Sandbox Code Playgroud)

然后我提交更改

tdc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

我之前也尝试过这种方式并得到同样的错误

tblUsers result = (from u in tdc.tblUsers
                   where u.UserID == userID
                   select u).Single();
result.Address = address;
result.Phone = phone;
tdc.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

它只会使用此查询检索1条记录,因为ChangeConflictException它是主键.

当它命中提交更改时,它会抛出未找到或已更改行的异常.我是唯一一个使用它的人,因此访问数据库或锁定没有其他冲突.它为什么会抛出UserID?我已经使用调试器,数据一直持续整个过程,包括我正在尝试进行的更改.

Sas*_*cha 4

也许您在不同的环境下工作?尝试使用封装它

using (myContext ctx = new myContext())
{
    var user = ctx.users.first();  
    user.name="blah";
    ctx.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)