小编mke*_*len的帖子

使用 Dapper 的 Sqlite。解析列时出错。无法将 System.Int64 类型的对象强制转换为 System.Double

我正在使用 fastcrud 和 dapper 将我的查询结果映射到我的自定义类型。我调查了 dapper 库,得出的结论是,我认为这是 Microsoft.Data.Sqlite 包的问题。不确定是否必须在那里修复,但这就是问题所在。

在解析查询结果中的每一行之前,Dapper 使用 SqliteDataReader 类中的 GetFieldType 方法来获取正确的列类型。

想象一下下表:

Id | MinTemp | MaxTemp

1  | 10.5    | 18.2 

2  | 10.6    | 20 
Run Code Online (Sandbox Code Playgroud)

sqlitedatareader.GetFieldType方法将为您提供以下类型:

System.Int64 for Id 和 System.Double for MinTemp 和 MaxTemp 这似乎是正确的,但是当它解析结果时,第 2 行发生以下错误

解析第 10 列时出错(MaxTemp=20 - Int64)无法将“System.Int64”类型的对象转换为“System.Double”类型。

由于SQLite动态类型系统,它将第 2 行的 MaxTemp 类型更改为 System.Int64。但是因为 dapper 将 MaxTemp 的类型定义为 double 它会导致上面提到的错误。

如果我将 sqlite 数据库中的 MaxTemp 值更改为 20.00001,则问题已解决,但这不正确。

使用的包:“ Microsoft.Data.Sqlite ”:“1.0.0”

有谁知道如何解决这个问题?

c# sqlite dapper asp.net-core

5
推荐指数
1
解决办法
7399
查看次数

使用knockout.js和moment.js时的日期无效

我将Knockout与moment.js和C#结合使用.在C#中,我使用以下命令传递ISO格式的日期:var jsonString = JsonConvert.SerializeObject(dataObject},new IsoDateTimeConverter());

在我的HTML文件中,我正在执行以下操作以格式化方式显示我的日期:

<script type="text/javascript">
var viewModel = {};
$.getJSON("http://www.test.com/jsonfile.txt", function(data) { 
viewModel.model = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
});
</script>
<div>Hello</div>
<div>Time: <span data-bind="text: moment(model.Time).format('L')"></span></div>
Run Code Online (Sandbox Code Playgroud)

我总是得到无效的日期,但当我使用时:

<div>Time: <span data-bind="text: model.Time"></span></div>
Run Code Online (Sandbox Code Playgroud)

它只是正确显示时间:2014-08-25T09:49:00

谁知道我做错了什么?

javascript knockout.js momentjs

1
推荐指数
1
解决办法
3979
查看次数

标签 统计

asp.net-core ×1

c# ×1

dapper ×1

javascript ×1

knockout.js ×1

momentjs ×1

sqlite ×1