EntityState.Modified 实体代码优先不工作

EntityState.Modified not working in Entity Code First

我使用此代码更新我 table 中的一个字段。(使用 Entity Framework 6.1.3)

var model = new MyTable { Id = Id, UpdateTime = DateTime.UtcNow };
var dbSet = this.dbContext.Set<MyTable>();
dbSet.Attach(model);                
entry = this.dbContext.Entry(model);
entry.State = EntityState.Modified;
this.dbContext.SaveChanges();

但这行不通,当我将代码更改为以下内容时,UpdateTime 不会 change.and:

var model = this.dbContext.Set<MyTable>().Find(id);
model = new MyTable { Id = Id, UpdateTime = DateTime.UtcNow };
var dbSet = this.dbContext.Set<MyTable>();              
entry = this.dbContext.Entry(model);
entry.State = EntityState.Modified;
this.dbContext.SaveChanges();

我发现在我的第一个代码中,EF 查找未更改的 UpdateTime 字段,但我写的时候是这样吗:

entry.State = EntityState.Modified;

ef 必须生成更新代码,那为什么不呢? 我该怎么做才能解决这个问题?

终于找到问题所在了? 我的 table 中有一个必填字符串字段,我发现我们需要在 Entity framework 中填写引用类型字段,并且它不能为空或空白字符但不需要正确的值,并且在我们不能使用这种状态 entry.State = EntityState.Modified; 而不是它,我们必须使用 entry.Property("UpdateTime").IsModified = true; 所以这个问题可以这样解决:

var model = new MyTable { Id = Id, UpdateTime = DateTime.UtcNow , Title = "EveryThing" };
var dbSet = this.dbContext.Set<MyTable>();
dbSet.Attach(model);                
entry = this.dbContext.Entry(model);
entry.Property("UpdateTime").IsModified = true;
this.dbContext.SaveChanges();