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

时间:2010-07-10 18:53:29

标签: c# sql sql-server linq sql-server-2008

我的一个表上有一个复合主键(Int和DateTime)。当我尝试使用LINQ添加新记录时(将DateTime字段设置为“AutoGeneratedValue = true”,并将getdate()作为服务器上的默认值),我收到以下错误:

  

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

知道为什么会这样吗?我相信它之前已经奏效,但我无法弄清楚会导致它停止工作的原因。不幸的是,关于这种错误的具体信息很少。

此外,通过SQL Server Management Studio手动提交行正常工作,并正确自动生成日期时间值。

编辑 - 搞定了 - 必须是LINQ to SQL中的错误:如果我在DBML中将DateTime的“IsPrimaryKey”设置为false,同时保持复合键在数据库方面。

这样可行:

  • SQL Server:复合主键(Id INT,MyDate DATETIME - AUTOGENERATED)
  • DBML:将标记为主键。将MyDate标记为自动生成,但作为主键。

我认为这是LINQ to SQL中的一个错误。

1 个答案:

答案 0 :(得分:1)

您需要将SQL Server中字段的默认值设置为自生成。对于DateTime字段,通常为GETDATE()

编辑:

除了AutoGeneratedValue = true之外,您还需要将Auto-Sync设置为OnInsert

相关问题