0

我正在使用 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 更改为第二次,所以在并发控制中我得到这个例外。

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

谢谢。

4

1 回答 1

0

我尝试使用 set Computed 并且在这种情况下可以正常工作。

于 2013-05-28T17:58:16.063 回答