Linq to sql Linq2Sql提交更改在更新时不执行任何操作

Linq to sql Linq2Sql提交更改在更新时不执行任何操作,linq-to-sql,Linq To Sql,我正在使用Linq2Sql并尝试更新表 但当我尝试更新列时,不会发生更新 我已经用attach语句尝试过了,但是我得到了一个重复的密钥错误 我正在使用我自己的实体并将其复制到上下文实体,如您所见 这是我的问题吗 这是我的保存方法 public void SaveUser(User user) { Mylester.Domain.DataContext.User sqluser = new Mylester.Domain.DataContext.User();

我正在使用Linq2Sql并尝试更新表

但当我尝试更新列时,不会发生更新

我已经用attach语句尝试过了,但是我得到了一个重复的密钥错误

我正在使用我自己的实体并将其复制到上下文实体,如您所见

这是我的问题吗

这是我的保存方法

   public void SaveUser(User user)
    {

        Mylester.Domain.DataContext.User sqluser = new Mylester.Domain.DataContext.User();

        sqluser.usrID = user.ID;
        sqluser.usrEmployeeID = user.EmployeeID;
        sqluser.usrFirstName = user.FirstName;
        sqluser.usrLastName = user.LastName;
        sqluser.usrPassword = user.Password;
        sqluser.usrEmail = user.Email;
        sqluser.usrModified = user.Modified;
        sqluser.usrCreated = user.Created;
        sqluser.usrLastLoggedOn = user.LastLoggedOn;
        sqluser.usrBrowserUsed = user.BrowserUsed;
        sqluser.usrLoginOnly = user.LoginOnly;
        sqluser.usrViewedWeeklyTimesheetChanges = user.ViewedWeeklyTimesheetChanges;
        sqluser.usrActive = user.Active;

        //_dbctx.Users.Attach(sqluser);
        _dbctx.SubmitChanges();
    }
这是我的测试方法

[TestMethod]
public void UpdateUser()
{
    User user;

    user = _service.GetUser(1474);
    user.FirstName = "TestXXXX";
    _service.SaveUser(user);

    user = _service.GetUser(1474);
    Assert.AreEqual(user.FirstName, "TestXXXX");
}
我正在使用我自己的实体并将其复制到上下文实体,如您所见

这是我的问题吗

是的,这会破坏
DataContext
s(用于实体跟踪)。最简单的更新方法大致如下:

User user = _dbctx.Users.Single(u => u.usrID == 1474);
user.FirstName = "TestXXXX";
_dbctx.SubmitChanges();

在提交更改之前,应该添加语句“dbcontext.tablename.inseronsmit(object);” 方法

public void SaveUser(User user)
    {

        Mylester.Domain.DataContext.User sqluser = new Mylester.Domain.DataContext.User();

        sqluser.usrID = user.ID;
        sqluser.usrEmployeeID = user.EmployeeID;
        sqluser.usrFirstName = user.FirstName;
        sqluser.usrLastName = user.LastName;
        sqluser.usrPassword = user.Password;
        sqluser.usrEmail = user.Email;
        sqluser.usrModified = user.Modified;
        sqluser.usrCreated = user.Created;
        sqluser.usrLastLoggedOn = user.LastLoggedOn;
        sqluser.usrBrowserUsed = user.BrowserUsed;
        sqluser.usrLoginOnly = user.LoginOnly;
        sqluser.usrViewedWeeklyTimesheetChanges = user.ViewedWeeklyTimesheetChanges;
        sqluser.usrActive = user.Active;
        //Use this to add the sql user to table named "User"
         _dbctx.Users.InsertOnSubmit(sqluser);
        //_dbctx.Users.Attach(sqluser);
        _dbctx.SubmitChanges();
    }