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);