快速问题Re:RowVersion的实现。
我希望将它包含在我的下一个数据库中(现在设计它),我正在考虑两种不同的方式:
有人试过吗?如果是这样,您遇到了什么陷阱或专业人士?
我将使用LINQ使用C#2008和SQL Server 2008访问数据。
谢谢,
詹姆斯
答案 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”来处理并发更新。
请勿使用您的第二个选项!