代码之家  ›  专栏  ›  技术社区  ›  Mike Two

对于LINQ to sql版本属性,首选的sql server列定义是什么?

  •  4
  • Mike Two  · 技术社区  · 14 年前

    我们正在使用 IsVersion ColumnAttribute 对LINQ to SQL类中的属性执行乐观并发检查。数据库中的列定义应该是什么?

    目前我们正在使用

    version_number int NOT NULL IDENTITY (1, 1) 
    

    我们需要身份吗?我们能让linqtosql为我们更新版本号吗?标识的唯一问题是每行都有不同的编号。我们希望在更新行时看到数字增加1。

    3 回复  |  直到 14 年前
        1
  •  4
  •   marc_s HarisH Sharma    14 年前

    行的“版本”应该在每次修改行时更新—行的唯一ID肯定会更新

    你要找的是 TIMESTAMP ROWVERSION 在SQL Server中-它以前被调用 ,但由于它实际上只是一个8字节的二进制“计数器”,与时间和/或日期无关(除了它随时间单调增加的事实之外),SQLServer团队将调用它 行版本 从现在开始。

    这是一种由SQL Server内部更新的数据类型—您不能自己设置或将值插入此类字段。它保证在每次行更改时都会更改,因此您可以使用它来检测数据中的某些更改。

    MSDN docs on rowversion 或者阅读 Understanding TIMESTAMP (ROWVERSION) in SQL Server

        2
  •  1
  •   Randy Minder    14 年前

    使用Timestamp数据类型,SQLServer将自动为您创建并增加该值。

        3
  •  1
  •   TomTom    14 年前