时间戳和并发问题

时间:2013-05-28 17:02:38

标签: c# entity-framework-4 concurrency timestamp

我使用的是EF 4.0,我在数据库中有一个带有时间戳字段的表,因为我想在此表中控制并发性。

然后,我创建了我的edmx,并使用模板DBContext生成了POCO类。

我做的第一次尝试是,在edmx中,在timestamp字段中,我将存储生成的模式设置为none。然后在我的代码中我做:

myContext.MyTable.Attach(myEntity);
myContext.Entry<MyTable>(myEntity).Property(p => p.AnyFieldNoTimestamp).IsModified = true;
myContext.SaveChanges();

这给了我一个例外,说明无法更新时间戳列。

如果我只标记了要修改的字段,并且此字段不是时间戳,为什么会出现此错误?

然后我尝试将edmx中存储的propery存储模式设置为Indentity。

我真的有一个交易和两个saveChanges。在第二次尝试中,第一个savechanges没有给出任何错误但是在第二个savechanges中我得到了受影响的异常0行,因为它似乎实体的时间戳已从第一个savechanges更改为第二个,所以在并发控制中我得到了这个例外。

所以我想知道如何在事务中使用时间戳字段和两个保存字符。

感谢。

1 个答案:

答案 0 :(得分:0)

我尝试使用Computed组,在这种情况下可以正常工作。