C# LINQ2SQL:通过web服务更新记录

C# LINQ2SQL:通过web服务更新记录,c#,linq-to-sql,C#,Linq To Sql,我有商务舱。本商务舱包括: 访问数据库的上下文(通过.dbml) 一些方法 Web服务调用此业务类中的SaveUser(User User)方法。此方法接收修改后的用户对象。如何通过对象receive as参数的值(字段值具有预期值)更新数据库中的记录 我试过这个: context.Users.Attach(user); context.SubmitChanges(); 我试过没有最后一行,同样。。。数据库中没有任何更改 有什么想法吗 谢谢 更新1 public class RightMan

我有商务舱。本商务舱包括:

  • 访问数据库的上下文(通过.dbml)
  • 一些方法
  • Web服务调用此业务类中的
    SaveUser(User User)
    方法。此方法接收修改后的
    用户
    对象。如何通过对象receive as参数的值(字段值具有预期值)更新数据库中的记录

    我试过这个:

    context.Users.Attach(user); 
    context.SubmitChanges();
    
    我试过没有最后一行,同样。。。数据库中没有任何更改

    有什么想法吗

    谢谢

    更新1

    public class RightManager
        {
            private readonly DBDataContext dc;
    
            public RightManager()
            {
                dc = new DBDataContext();
            }
    
            public User GetUser(int id)
            {
                User user = dc.GetTable<User>()
                    .Where(x => x.Id == id && x.IsEnable == true)
                    .SingleOrDefault<User>();
    
                return user;
            }                     
    
            public void SaveUser(User user)
            {
                dc.Users.Attach(user);
            }
    
        }
    
    公共类RightManager
    {
    私有只读DBDataContext dc;
    公共权利经理()
    {
    dc=新的DBDataContext();
    }
    公共用户GetUser(int-id)
    {
    User=dc.GetTable()
    .Where(x=>x.Id==Id&&x.IsEnable==true)
    .SingleOrDefault();
    返回用户;
    }                     
    公共void SaveUser(用户)
    {
    dc.Users.Attach(用户);
    }
    }
    
    当然,通过参数接收的对象不是用户对象。您必须从上下文中获取一个(通常通过Id),更新所需的属性,然后提交

    public void SaveUser (User user) {
        var userToUpdate = context.Users.Where(u => u.Id == user.Id).Single();
        userToUpdate.FirstName = user.FirstName;
        userToUpdate.LastName = user.LastName;
    
        context.SubmitChanges();
    }
    

    您可以使用attach方法的重载之一


    查看此帖子:

    欢迎使用一些代码,如果不查看代码,我们就无法真正了解您做错了什么。请查看以下相关问题:@brunoconde我试过了,数据库中没有任何更改