gpt4 book ai didi

c# - ServiceStack.OrmLite : Reading back a TimeSpan using Untyped API results in InvalidCastException

转载 作者:行者123 更新时间:2023-11-29 07:30:20 27 4
gpt4 key购买 nike

我让 ServiceStack OrmLite (5.1.1) 创建表,并保留包含 TimeSpan 的对象:

// ...
public TimeSpan _Jobs_VehicleNotificationTime { get; set; }
// ...

当我尝试读回它时,出现了这个错误:

System.InvalidCastException: 'Invalid cast from 'System.Int64' to 'System.TimeSpan'.'

is persisted as a long它似乎: enter image description here

但是我在使用 FromObjectDictionary 方法时得到了这个:

enter image description here

错误是:

   at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
at ServiceStack.PlatformExtensions.ObjectDictionaryFieldDefinition.SetValue(Object instance, Object value)
at ServiceStack.PlatformExtensions.FromObjectDictionary(IReadOnlyDictionary`2 values, Type type)
at tWorks.Core.CoreServerCommons.Handlers.OrmLiteDbHandler.<>c__DisplayClass65_1.<ReadObjects>b__1(Dictionary`2 x) in D:\[GIT]\Core\CoreServerCommons\Handlers\DbHandlers\OrmLite\OrmLiteDbHandler.cs:line 577

这是一个错误还是我遗漏了什么?

最佳答案

TimeSpan 在 OrmLite 中存储为整数列,以确保它们在所有支持的 RDBMS 中保持精度和行为。如果您使用对象字典中的动态结果集检索它,那么它将只能返回未通过 OrmLite 转换器将其转换回 TimeSpan 的数据读取器值,在在这种情况下,您将无法在此处使用 ServiceStack.Text 的 FromObjectDictionary() 通用扩展方法,它不使用 OrmLite 的转换器。

关于c# - ServiceStack.OrmLite : Reading back a TimeSpan using Untyped API results in InvalidCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51592303/

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