Linq 2 SQL:通过web服务更新记录
本文关键字:服务 更新 新记录 web 通过 SQL Linq | 更新日期: 2023-09-27 18:07:53
我有一个商务舱。在这个商务类中有:
- 访问数据库的上下文(通过.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);
}
}
当然,您通过参数接收的对象不是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