我有一个员工对象说:
public class Employee
{
public int Id {get; set;}
public int Name {get; set;}
public int Address {get; set;}
...other few 10's of properties
}
问题是我如何只更新名称?例如。如果我想更新姓名,我会这样做
Employee e = Db.Employees.Where(e => e.Id == someId).SingleOrDefault();
e.Name = "Jack";
Db.SaveChanges();
如您所见,为了更新,我必须首先获取对象,然后更新,然后调用 SaveChanges()。对于可以通过对数据库的单个查询完成的任务,我必须触发 2 个查询:1)获取对象 2)更新所需的对象并保存更改。
对于传统的存储过程方法,我只需传递 Id、传递新名称并写入 Update 语句,然后就完成了。实体框架真的那么低效还是我错过了什么?
您可以有选择地更新列:
var employee = new Employee() { Id = someId, Name = "Jack" }
Db.Employees.Attach(employee);
Db.Employees.Entry(employee).Property(e => e.Name).IsModified = true;
Db.SaveChanges();
注意:仅带有 .NET 4.5 的 EF 5 支持设置IsModified
回到false
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)