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();
我使用此代码更新我 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();