C# SQL Server RowVersion
快速提问:RowVersion的实现 我希望在我的下一个数据库中包含它(现在设计),我正在考虑两种不同的方法:C# SQL Server RowVersion,c#,.net,sql,sql-server,linq,C#,.net,Sql,Sql Server,Linq,快速提问:RowVersion的实现 我希望在我的下一个数据库中包含它(现在设计),我正在考虑两种不同的方法: 所有表中的行版本行 一个单独的RowVersion表,该表的ID作为外键并链接到它 有人试过这个吗?如果是这样的话,你经历过哪些陷阱或职业陷阱 我将使用LINQ使用C#2008和SQL Server 2008访问数据 谢谢 James如果您使用的是LINQ to SQL,那么最好为每个实体表包含一个timestamp/rowversion列,因为这允许LINQ非常容易地使用乐观并发,并
James如果您使用的是LINQ to SQL,那么最好为每个实体表包含一个timestamp/rowversion列,因为这允许LINQ非常容易地使用乐观并发,并导致更新的性能稍好一些(因为LINQ只需要查询timestamp列,而不必比较其他列的更改)
因此,选择第一个选项。第二个选项实际上是非起始选项。假设RowVersion指的是时间戳(坏名称)数据类型 在所有表中使用Rowversion列 SQLServer会自动更新该列 我从未使用过LINQtoSQL(就像我的SQLRAW一样),但Rowversion列在更新(并发)中非常有用 只需使用“whereid=@ID和ROWVERSION=@RV”来处理并发更新
不要使用第二个选项!将行版本添加到主表-将其放入第二个表中并链接到该表将降低性能
正如Sam在上文中所说,LINQ从表上的rowversions中获益——但我认为它不会与链接表一起工作。正如我所怀疑的那样……没有必要重新发明轮子!!谢谢Sam。从SQL Server 2008开始,该数据类型被称为“RowVersion”(因为时间戳名称非常容易误导和混淆)马克:你是对的,但管理工作室还没有意识到这一点。