我不确定是否应该就此提出一个问题,所以我想问一下是否有人知道这个问题的简单解决方法。当我尝试将Dapper与OleDbConnection结合使用,当与MS Access 2003(Jet.4.0)结合使用时,我收到错误(不是我选择的数据库!)
当运行下面的测试代码时,我得到一个异常'OleDbException:条件表达式中的数据类型不匹配'
var count = 0;
using (var conn = new OleDbConnection(connString)) {
conn.Open();
var qry = conn.Query<TestTable>("select * from testtable where CreatedOn <= @CreatedOn;", new { CreatedOn = DateTime.Now });
count = qry.Count();
}
我相信过去使用OleDb日期的经验,是在将DbType设置为Date时,它会将OleDbType属性的值内部更改为OleDbTimeStamp而不是OleDbType.Date。我明白这不是因为Dapper,而是“可以”被认为是OleDbParameter类内部链接的奇怪方式
使用其他ORM,原始ADO或我自己的工厂对象处理此问题时,我会在运行命令之前清理命令对象并将OleDbType更改为Date。
就我所见,Dapper无法做到这一点,因为命令对象似乎是内部的。不幸的是,我没有时间学习动态生成的东西,所以我可能会遗漏一些简单的东西,或者我可能会建议修复并做出贡献而不是简单地提出问题。
有什么想法吗?
利