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

发布于 2024-12-03 19:48:32 字数 961 浏览 0 评论 0原文

我有商务舱。在此业务类中,有:

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

    }

I have a business class. In this business class there are :

  1. a context to access database (via .dbml)
  2. Some methods

A SaveUser(User user) method from this business class is called by a webservice. This method receive the modified User object. How can I update the record in the database by the value from the object receive as parameter (the fields value have the expected values) ?

I tried this :

context.Users.Attach(user); 
context.SubmitChanges();

I tried without the last line, same... no change in the database.

Any idea ?

Thanks,

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

    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

琉璃繁缕 2024-12-10 19:48:32

当然,您通过参数收到的对象不是 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();
}

Sure, the object you recieve by argument is not User object. You have to get one from context (usually by Id), update required properties and submit then.

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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文