Linq 2 SQL:通过web服务更新记录

本文关键字:服务 更新 新记录 web 通过 SQL Linq | 更新日期: 2023-09-27 18:07:53

我有一个商务舱。在这个商务类中有:

  1. 访问数据库的上下文(通过.dbml)

web服务调用这个业务类的SaveUser(User user)方法。该方法接收修改后的User对象。我如何通过从对象接收作为参数的值来更新数据库中的记录(字段值具有期望值)?

我试过了:

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);
        }
    }

Linq 2 SQL:通过web服务更新记录

当然,您通过参数接收的对象不是User对象。你必须从上下文(通常通过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方法。

查看此帖子:http://blogs.msdn.com/b/dinesh.kulkarni/archive/2007/10/08/attach-if-you-have-something-detached.aspx