作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个实体,想使用entityframework更新
EmployeeModel employee = new EmployeeModel
{
Id = 1000, //This one must
FirstName = modifiedValue,
Email = modifiedValue,
LastName = originalValue,
Phone = originalValue
};
_db.ObjectStateManager.ChangeObjectState(employee, EntityState.Modified);
_db.SaveChanges();
Update Employee set Id=1138,FirstName='modifiedValue',Email='modifiedValue',LastName= 'OriginalValue',phone='originalValue' where Id=1138
Update Employee set FirstName='modifiedValue', Email='modifiedValue' where Id=1138.
最佳答案
在处理DTO时,此问题很常见。从数据库中获取一个雇员实体,将其映射到DTO并通过网络发送。然后,客户端修改此DTO并将其发送回服务器。
当您触摸(设置)EF实体上的属性时,EF将假定该值已更改。即使旧值和新值完全相同。
当您将DTO映射到新的实体并将其附加到EF并将其状态更新为“已修改”时,会发生相同的问题。
使用AutoMapper:
// This will result in the full update statement
var employee = AutoMapper.Mapper.Map<EmployeeDto, Employee>(dto);
// This will result in a smaller update statement (only actual changes)
var employee = dbContext.Employees.Find(dto.Id);
AutoMapper.Mapper.Map(dto, employee);
// This will result in a smaller update statement (only actual changes)
var employee = dbContext.Employees.Find(dto.Id);
if (employee.Email != dto.Email )
employee.Email = dto.Email;
关于entity-framework - 如何仅更新修改后的值(EntityFramework 5.0)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627999/
我是一名优秀的程序员,十分优秀!