c# - 更新 EF 4.1 中的记录

标签 c# .net sql entity-framework entity-framework-4.1

我有一个员工对象说:

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,传递新名称并编写更新语句,然后就完成了。 Entity Framework 真的那么低效还是我遗漏了什么?

最佳答案

您可以有选择地更新列:

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

关于c# - 更新 EF 4.1 中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11814996/

相关文章:

mysql - SQL 递归过滤结果,为每个匹配字段排除 3 个最近的记录

c# - 如何对字符串数组进行排序?

c# - log4net.Filter.PropertyFilter 不工作

c# - 尝试反序列化 json 时无法在 JsonConvert 之后实现 Iterator 设计模式

内部连接查询中的 MySQL COALESCE?

php - 无法创建表(错误号 : 150) on FOREIGN KEY

c# - Db.SaveChanges 在插入后不分配主键 ID - Code First Entity Framework

c# - 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

.net - 如何检查是否正在调用 Global.asax 文件

c# - CheckedListBox 中的第二级