【发布时间】:2016-05-19 01:59:52
【问题描述】:
我有一个有效的Update 方法,它只是更改属性值并在数据库上下文中调用SaveChanges():
public void Update(int id, string name)
{
var entity = context.Entities.Single(x => x.Id == id);
entity.Name = name;
context.SaveChanges();
}
确实会应用这种方式更改,但是 EnityState 仍然“未更改”。关于为什么的任何想法?我试图避免必须明确告诉 EF 发生了什么,例如使用context.Entry(entity).State = EntityState.Modified;
问题是我正在使用被覆盖的 SaveChanges 方法中的状态:
public override int SaveChanges()
{
var context = ((IObjectContextAdapter)this).ObjectContext;
var objectStateEntries =
context.ObjectStateManager
.GetObjectStateEntries(EntityState.Added | EntityState.Modified);
...
return base.SaveChanges();
}
..调试时,我可以看到我的实体的状态是Unchanged。
【问题讨论】:
-
在调用 SaveChanges 之前,状态是 MODIFIED 在调用 SaveChanges 之后,状态是 UNCHANGED
-
在那一行“entity.Name = name;”之后状态应该被修改,但之后是“context.SaveChanges();”它应该再次保持不变。
-
@CyrilIselin 不是。查看更新。
标签: c# entity-framework self-tracking-entities