【发布时间】:2013-05-28 17:02:37
【问题描述】:
我正在使用 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 更改为第二次,所以在并发控制中我得到了这个例外。
所以我想知道如何在事务中使用时间戳字段和两个保存时间。
谢谢。
【问题讨论】:
标签: c# entity-framework-4 concurrency timestamp