时间戳作为复合主键的一部分?

时间:2010-04-12 18:21:13

标签: sql-server linq-to-sql timestamp composite-primary-key

当使用带有时间戳的linq-to-sql作为复合主键的一部分时,我收到此错误:

“服务器无法生成'Timestamp'类型的主键列。”

我猜这可能是因为时间戳只是一个行版本,因此它可能必须在插入后创建?还是......

2 个答案:

答案 0 :(得分:5)

请勿使用时间戳数据类型!!

  

不推荐使用时间戳语法。   此功能将在a中删除   Microsoft SQL的未来版本   服务器。避免使用此功能   新的发展工作,并计划   修改当前使用的应用程序   这个功能。

时间戳(Transact-SQL) http://msdn.microsoft.com/en-us/library/ms182776(SQL.90).aspx rowversion(Transact-SQL) http://msdn.microsoft.com/en-us/library/ms182776.aspx

此外,如果它主要用于更改,为了跟踪版本,为什么要将它作为主键的一部分?更改主键可能会导致许多问题!

如果您需要系统生成的主键值,请使用标识 guid

IDENTITY(属性) http://msdn.microsoft.com/en-us/library/aa933196(SQL.80).aspx
GUID uniqueidentifier http://msdn.microsoft.com/en-us/library/aa260656(v=SQL.80).aspx

答案 1 :(得分:0)

你可以解决它..设置

  • 自动生成的值
  • 自动同步到OnInsert

......除非你当然已经拥有