我正在使用 EF 4.0,并且我的数据库中有一个带有时间戳字段的表,因为我想控制该表中的并发性。
然后,我创建了我的 edmx,并使用模板 DBContext 生成了 POCO 类。
我做的第一次尝试是,在 edmx 的时间戳字段中,我将存储的生成模式设置为无。然后在我的代码中我这样做:
myContext.MyTable.Attach(myEntity);
myContext.Entry<MyTable>(myEntity).Property(p => p.AnyFieldNoTimestamp).IsModified = true;
myContext.SaveChanges();
这给了我一个例外,说不可能更新时间戳列。
如果我只将一个字段标记为已修改,而该字段不是时间戳,为什么会出现此错误?
然后我尝试将 edmx 中存储的生成模式设置为 Indentity。
真的我有一个交易和两个saveChanges。在第二次尝试中,第一次 savechanges 没有给出任何错误,但在第二次 savechanges 中我得到了异常 0 行受影响,因为实体的时间戳似乎从第一次 savechanges 更改为第二次,所以在并发控制中我得到这个例外。
所以我想知道如何在事务中使用时间戳字段和两次保存费用。
谢谢。