Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server RowVersion_C#_.net_Sql_Sql Server_Linq - Fatal编程技术网

C# SQL Server 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非常容易地使用乐观并发,并

快速提问:RowVersion的实现

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

  • 所有表中的行版本行
  • 一个单独的RowVersion表,该表的ID作为外键并链接到它
  • 有人试过这个吗?如果是这样的话,你经历过哪些陷阱或职业陷阱

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

    谢谢


    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”(因为时间戳名称非常容易误导和混淆)马克:你是对的,但管理工作室还没有意识到这一点。