c# - 服务器无法生成错误 "The primary key column of type ' DateTime'。”

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

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

The primary key column of type 'DateTime' cannot be generated by the server.

知道这是为什么吗?我相信它以前有效,但我无法弄清楚是什么导致它停止工作。遗憾的是,关于此类错误的具体信息很少。

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

编辑 - 正常工作 - 一定是 LINQ to SQL 中的错误:如果我在 DBML 中将 DateTime 的“IsPrimaryKey”设置为 false,同时将复合键保留在数据库端。

所以这是可行的:

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

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

最佳答案

需要在SQL Server中设置字段默认为自生成。对于 DateTime 字段,这通常是 GETDATE()

编辑:

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

关于c# - 服务器无法生成错误 "The primary key column of type ' DateTime'。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3220442/

相关文章:

c# - 如何在嵌套的 DataGrid 中绑定(bind) ContextMenu 项?

c# - 将 <ItemTemplate> 与复选框和标签一起使用

时间:2019-03-17 标签:c#.net 3.5System.Net.Mail

sql - 将表作为参数传递到 sql server UDF

sql-server - SQL Server 代理 - SSIS 包 - 错误 0x80131904 - 超时已过期

c# - 获取带有字符串值的类属性列表

sql - 行之间的复杂计算过程其中之一可能为空

MySQL查询协助

sql - 如何在 SQL 中进行列搜索

sql-server - mssql特殊字符编码问题