我们在LINQ to SQL类的属性上使用ColumnAttribute
的IsVersion
属性进行乐观并发检查。数据库中该列定义应是什么?
目前我们正在使用
version_number int NOT NULL IDENTITY (1, 1)
我们需要身份验证吗?我们能否让LINQ to SQL为我们更新版本号?使用Identity的唯一问题是每行都有一个不同的数字。当更新行时,我们希望看到数字递增1。
我们在LINQ to SQL类的属性上使用ColumnAttribute
的IsVersion
属性进行乐观并发检查。数据库中该列定义应是什么?
目前我们正在使用
version_number int NOT NULL IDENTITY (1, 1)
我们需要身份验证吗?我们能否让LINQ to SQL为我们更新版本号?使用Identity的唯一问题是每行都有一个不同的数字。当更新行时,我们希望看到数字递增1。
TIMESTAMP
或ROWVERSION
- 它曾经被称为TIMESTAMP
,但由于它实际上只是一个8字节二进制“计数器”,与时间和/或日期无关(除了它随着时间单调递增),所以SQL Server团队从现在开始将其称为ROWVERSION
。在你的数据库表中应该使用一个时间戳数据类型。这将转换成实体中的 System.Data.Linq.Binary 类型。
使用时间戳数据类型,SQL Server 将自动为您创建并增加此值。
如果数据不会经常更改,您也可以使用真实的时间戳(我在金融应用程序中经常这样做,但我可以保证不同的时间戳),或者一个简单的计数列。
IsVersion
属性设置为true时,我无法让LINQ to SQL更新它。 - Mike Two