我正在尝试使用 Dapper 查询 Sqlite 表,如下所示:CREATE TABLE "Running" ( "Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, "MachineName" BLOB NOT NULL DEFAULT 'machine' UNIQUE, "IsOnline" INTEGER DEFAULT 0, "TimesRan" INTEGER DEFAULT 0, "LoginDateTime" TEXT, "LogoutDateTime" TEXT, "ForceUpgrade" INTEGER NOT NULL DEFAULT 0, "Version" TEXT)目前在该表中我只有一条记录:1DESKTOP-KQT7CGC 012019-09-21 03:04:10.0990672019-09-21 03:04:37.6825109 04.0.0var data = await _globalConfig.Connection.GetStatusAsync(); public async Task<List<ApplicationInfoModel>> GetStatusAsync() { using (IDbConnection cnn = new SQLiteConnection(ConfigurationManager.GetLocalOrSharedConnectionString(), true)) { var output = await cnn.QueryAsync<ApplicationInfoModel>("select * from Running", new DynamicParameters()); return output.ToList(); } }ApplicationInfoModel 看起来像这样:public class ApplicationInfoModel{ public int Id { get; set; } public string MachineName { get; set; } public bool IsOnline { get; set; } public int TimesRan { get; set; } public DateTime LoginDateTime { get; set; } = DateTime.Now; public DateTime LogoutDateTime { get; set; } public bool ForceUpgrade { get; set; } public string Version { get; set; }}我收到了 System.Data.DataException,其中包含消息 Error parsing column 1 (MachineName=System.Byte[] - Object)。有人可以帮助我理解为什么我应该在模型上实现IConvertible吗?我尝试仅针对 属性实现 IConvertible,但它仍然引发相同的异常。MachineName
1 回答
慕仙森
TA贡献1827条经验 获得超7个赞
在这种特定情况下对象必须实现 IConvertible 内部异常意味着 Dapper 无法自动转换您的MachineName
DB字段从数据库类型 BLOB
到模型类型 string
您应该对 列使用数据库类型 TEXT
(这应该是正确的选择),或者将其转换为 SQL 正确地。像这样:MachineName
select
TEXT
select cast(MachineName AS TEXT), IsOnline, TimesRan, LoginDateTime, LogoutDateTime, ForceUpgrade, Version from Running
这两个选项都应该可以解决您当前的问题(例外情况)。
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消