gpt4 book ai didi

c# - OrmLite LocalDate 到 DateTime 转换器未应用于 Sqlite 内存数据库的 Where 子句

转载 作者:行者123 更新时间:2023-11-30 15:55:31 24 4
gpt4 key购买 nike

Referenced Code

我正在尝试解决的问题

使 ValuationsCommanderTests.SetTransactionAndRelatedEmbeddedDerivativevaluationsToBad_ValidInput_CorrectlyManipulatesDB() 通过。

尝试解决问题

调试后,我缩小了它无法通过的原因,因为私有(private)方法 ValuationsCommander.SetRelatedDailyTransactionHistoryRecordsToBad 从不更新记录,因为它是如何转换的(或者更确切地说不转换) NodaTime 的 LocalDate 尽管已经为这种类型注册了一个转换器。

此方法生成的 SQL 示例如下

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

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

我认为可能导致此问题的一些原因如下:

  • 方言提供者未正确注册 NodeTime 转换器
  • 使用虚拟类创建 DailyTransactionhistoryTableModel,该虚拟类将 DateTime 作为 ValuationTimeStamp 的类型。

这些似乎都不是根本问题,我已经想不出解决这个问题的方法了。

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

最佳答案

像往常一样,归功于@mythz 解决了这个问题。 :)

问题最终是 LocalDate 到 DateTime OrmLiteConverter 的不完整实现,通过不实现 ToQuotedString() 它在 SQL 中发出值时使用默认字符串,结果是1993 年 11 月 13 日星期六 的效果,而不是 SQL 识别的日期时间格式。

关于c# - OrmLite LocalDate 到 DateTime 转换器未应用于 Sqlite 内存数据库的 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48548217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com