【问题标题】:Linq 2 SQL : update record via a web serviceLinq 2 SQL:通过 Web 服务更新记录
【发布时间】:2011-09-08 10:58:41
【问题描述】:

我有商务舱。这个商务舱有:

  1. 访问数据库的上下文(通过 .dbml)
  2. 一些方法

此业务类中的SaveUser(User user) 方法由 Web 服务调用。此方法接收修改后的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);
        }

    }

【问题讨论】:

  • 欢迎提供一些代码,如果不查看代码,我们无法真正看出您做错了什么。
  • 请看这个相关问题:stackoverflow.com/q/1758214/31136
  • @brunoconde 我试过了,数据库没有变化

标签: c# linq-to-sql


【解决方案1】:

当然,您通过参数收到的对象不是用户对象。您必须从上下文中获取一个(通常通过 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();
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多