Dapper和System.Data.OleDb DbType.Date抛出'OleDbException:条件表达式中的数据类型不匹配'

时间:2011-08-03 12:55:57

标签: ms-access oledbconnection dapper

我不确定是否应该就此提出一个问题,所以我想问一下是否有人知道这个问题的简单解决方法。当我尝试将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无法做到这一点,因为命令对象似乎是内部的。不幸的是,我没有时间学习动态生成的东西,所以我可能会遗漏一些简单的东西,或者我可能会建议修复并做出贡献而不是简单地提出问题。

有什么想法吗?

0 个答案:

没有答案