SQL Server RowVersion

时间:2010-01-08 04:54:10

标签: c# .net sql sql-server linq

快速问题Re:RowVersion的实现。

我希望将它包含在我的下一个数据库中(现在设计它),我正在考虑两种不同的方式:

  1. 所有表格中的RowVersion行
  2. 一个单独的RowVersion表,它将表的ID作为外键并链接到它。
  3. 有人试过吗?如果是这样,您遇到了什么陷阱或专业人士?

    我将使用LINQ使用C#2008和SQL Server 2008访问数据。

    谢谢,

    詹姆斯

3 个答案:

答案 0 :(得分:11)

如果您使用的是LINQ to SQL,那么为每个实体表包含一个时间戳/行转换列是一个好习惯,因为这样可以让LINQ非常轻松地使用乐观并发,并使更新的性能略微提高(仅限LINQ)必须查询时间戳列,而不必比较其他列进行更改)。

所以选择第一个选项。第二个选项是非首发,真的。

答案 1 :(得分:2)

将你的rowversion添加到主表 - 将它放在第二个表中并链接到它会降低性能。

正如山姆上面所说,LINQ受益于在桌面上进行反转 - 但我认为它不适用于链表。

答案 2 :(得分:1)

假设RowVersion是指时间戳(错误名称)数据类型。

在所有表格中使用Rowversion列。

SQLServer自动更新列。

我从未使用过LINQ to SQL(比如我的SQL raw),但Rowversion列在更新(并发)中非常有用。

只需使用“WHERE ID = @ ID AND ROWVERSION = @ RV”来处理并发更新。

请勿使用您的第二个选项!