EF select statement



我有一个模型类,如下

 public class Employee()
 {
   public string Name {get; set;}
   public string Age  {get; set;}
   ..
   ..
 }

假设我正在更新员工的年龄,我会按照linq 来做

 DbContext db = new DbContext();
 Employee employee = dc.Emplyees.where(x=>x.id==id).FirstorDefault();
 employee.Age ="22";
 db.SaveChanges();

我的问题是更新年龄我需要获取所有列是否有任何方法可以只获取ID和年龄并更新年龄;

感谢

不是现成的,不是。实体框架的工作方式是跟踪完整的对象。您需要完整的对象才能更改和更新该对象。否则,实体框架将只清空所有其他属性,因为它将解释为您打算通过不发送任何内容来清除这些值。

但是,您可以直接使用数据库,并发出UPDATE或调用将手动执行更新的存储过程。如果您愿意,可以在您的上下文中执行此操作,然后只需从控制器中调用该方法,这样所有数据库内容仍然在同一位置。在上下文中,Database实例属性具有直接执行SQL所需的一切。

首先,您只选择年龄

var employee = db.Employees.Where(x => x.Id == id).Select(x => new Employee{ Id = x.Id, Age = x.Age}).FirstOrDefault();

通过这样做,您将只从数据库中检索年龄和id。

对于更新,你可以这样做

var employee = new Employee{Id = id, Name = "My new Name", Age = 25};
db.Employees.Attach(employee);
db.Entry(employee).Property(x => x.Name).IsModified = true;
db.Entry(employee).Property(x => x.Age).IsModified = true;
db.SaveChanges();

最新更新