我的一个表上有一个复合主键(Int和DateTime)。当我尝试使用LINQ添加新记录时(将DateTime字段设置为“AutoGeneratedValue = true”,并将getdate()作为服务器上的默认值),我收到以下错误:
服务器无法生成“DateTime”类型的主键列。
知道为什么会这样吗?我相信它之前已经奏效,但我无法弄清楚会导致它停止工作的原因。不幸的是,关于这种错误的具体信息很少。
此外,通过SQL Server Management Studio手动提交行正常工作,并正确自动生成日期时间值。
编辑 - 搞定了 - 必须是LINQ to SQL中的错误:如果我在DBML中将DateTime的“IsPrimaryKey”设置为false,同时保持复合键在数据库方面。
这样可行:
我认为这是LINQ to SQL中的一个错误。
答案 0 :(得分:1)
您需要将SQL Server中字段的默认值设置为自生成。对于DateTime字段,通常为GETDATE()
。
编辑:
除了AutoGeneratedValue = true
之外,您还需要将Auto-Sync
设置为OnInsert
。