C# 使用DateTime2插入带有Dapper的数据会引发SqlDateTime溢出异常

C# 使用DateTime2插入带有Dapper的数据会引发SqlDateTime溢出异常,c#,.net,sql,ado.net,dapper,C#,.net,Sql,Ado.net,Dapper,如果我有一个对象,例如: public class Person { public int Id {get;set;} public string Name {get;set;} public DateTime DOB {get;set;} } 如果我在对象上设置名称,DOB为DateTime.MinValue,并像这样使用Dapper: INSERT INTO [Person] ([Person].[Name], [Person].[DOB]) VALUES (@Name, @D

如果我有一个对象,例如:

public class Person
{
  public int Id {get;set;}
  public string Name {get;set;}
  public DateTime DOB {get;set;}
}
如果我在对象上设置名称,DOB为DateTime.MinValue,并像这样使用Dapper:

INSERT INTO [Person] ([Person].[Name], [Person].[DOB]) VALUES (@Name, @DOB);
SELECT CAST(SCOPE_IDENTITY()  AS BIGINT) AS [Id]

connection.Query<long>(sql, entity);

问题在insert语句中。您指定了三个值和两个列名。这样的查询可以工作,或者添加与变量@referedid对应的列名

INSERT INTO [Person] ([Person].[Name], [Person].[DOB]) VALUES (@Name, @DOB);

试着看看下面的答案,关于在Dapper中映射DateTime2类型。Net DateTime应该处理这两个问题

Dapper正在将datetime映射到DbType datetime,而不是您所需要的DbType.DateTime2

typeMap[typeof(DateTime)]=DbType.DateTime; typeMap[typeof(DateTime?)=DbType.DateTime


但是你可以自己添加一个类型映射,但是你需要创建一个datetime2类型/类。

请将Person表脚本为create table并发布在这里。可能是某种类型的输入错误,但是字段计数与nope datetime2的insert QUERYPOLIABLE副本中的值计数不匹配billy@Jon停止尝试在数据库中存储垃圾;)约会时间?在db-tick-nullable中,我刚刚保存了您存储的坏数据:Ddid看到了,但是我是由nuget安装的,所以没有要修改的文件。谢谢:)而且行号现在错了,你能改为链接到函数或测试吗?(我不知道你能不能)
INSERT INTO [Person] ([Person].[Name], [Person].[DOB]) VALUES (@Name, @DOB);