比如数据表User映射成User实体类,有如下属性
Id, FullName, EmailAddress, Fax, Tel
网页表单我只更新Email和Fax两属性,我在Controller里面用User类作为参数接收值,
public ActionResult Edit(User user) {}
一般的做法就是这样做提交更改:
var _user = GetUsers().Where(a => a.Id == user.Id).SingleOrDefault();
_user.Fax = user.Fax;
_user.EmailAddress = user.EmailAddress;
context.SaveChanges();
如果属性非常多的时候,我觉得这样做非常繁琐,若采用这样更新所有实体,若数据表有非空的字段将不允许这样做,将抛出异常。
var _user = GetUsers().Where(a => a.Id == user.Id).SingleOrDefault();
context.ApplyCurrentValues(_user.EntityKey.EntitySetName, user);
context.SaveChanges();
属性映射的时候,可以设置允许非空字段呀。
public void Update(int? id)
{
using(var db = new BestEntities()) {
var Query = db.xx.Where(xxx).FirstOrDefault();
if(TryUpdateModel(Query)) {
db.SaveChanges();
}
}
}
使用伪包装类对象