OrmLite LocalDate到DateTime转换器未应用于SqlLite In-Memory Db的子句

时间:2018-01-31 17:35:10

标签: c# datetime servicestack ormlite-servicestack nodatime

Referenced Code

我正试图解决的问题

ValuationsCommanderTests.SetTransactionAndRelatedEmbeddedDerivativevaluationsToBad_ValidInput_CorrectlyManipulatesDB()通过。

尝试解决问题

调试之后,我已经缩小了它无法传递的原因,因为私有方法ValuationsCommander.SetRelatedDailyTransactionHistoryRecordsToBad永远不会更新记录,因为它是如何转换(或者不是转换)NodaTime的{{1尽管已经注册了这种类型的转换器。

此方法生成的SQL示例如下

LocalDate

从这个声明中我可以看出,从LocalDate到DateTime的转换没有发生,而是决定通过toString而不是通过DateTime比较来比较它。

我认为可能导致这种情况的一些事情如下:

  • Dialect Provider未正确注册NodeTime Converter
  • 使用UPDATE "cfo_daily_trans_hist" SET "dh_sn_scenario_id"=@dh_sn_scenario_id WHERE (("dh_tq_tran_quote_id" = @0) AND ('Saturday, November 13, 1993' <= "dh_val_time_stamp")) 作为DailyTransactionhistoryTableModel
  • 类型的虚拟类创建DateTime

这些似乎都不是潜在的问题,我已经没有办法解决这个问题。

是否有一些我不了解OrmLite如何使用转换器或其他任何我可能尝试解决此问题的事情?

1 个答案:

答案 0 :(得分:3)

按照惯例,信用证去@mythz解决这个问题。 :)

在问题最终是一个不完整的实施LOCALDATE为DateTime OrmLiteConverter的,通过不执行ToQuotedString()发光SQL中的值,当它被使用的缺省字符串,结果东西的{{1的效果而不是SQL识别的日期时间格式。