我有一张像
这样的表格 Thingy
=======================================
| ... | RowVersion | ... |
=======================================
和另一个像
Result
=======================================
| ... | ThingyRowVersion | ... |
=======================================
在SQL Server中,列的类型为timestamp
,而在C#中,列的类型为Binary
。当我尝试使用相同的行版本创建结果时,我所看到的是一个问题,例如
Result r = new Result()
{
ThingyRowVersion = (from t in Context.Thingies where t.Id == id select t.RowVersion).Single()
}
Context.InsertOnSubmit(r);
Context.SubmitChanges();
提交更改后行版本不会相等。
在C#land中,他们在我提交之前似乎是平等的,但是当我提交时,我看到了不匹配的情况
0x0000000000002787
/ 0x0000000000002782
知道这里发生了什么吗?
答案 0 :(得分:1)
每当插入或更改行时,时间戳都会自动更新,并且用户无法正常操作。与它们最常见的操作是在使用乐观并发时用作检查,以查看自上次读取行以来该行是否已更新。你可能想要使用像UniqueIdentifier这样的东西来做你想做的事。