dapper 可空bool转换出错及解决方案
最近使用entityframewok生成数据库,使用dapper来访问数据库,产生了一个意外的bug,下面是产生bug的示例以及解决方案。
由于用entityframework生成数据库,默认情况entityframewok 将bool?转换为tinyint(1),
使用dapper查询数据时报错(部分数据为空,部分数据不为空,且查询出来的第一条是可为空的数据才会出现问题,否则不会报错)。
1、定义一个类:
public class BugNullable
{
public int ID { get; set; }
public string Name { get; set; }
public bool? IsBug { get; set; }
public DateTime? UpdatedTime { get; set; }
}
2、生成数据库表
CREATE TABLE `bugnullable` (
`ID` INT(11) NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(50) NOT NULL DEFAULT '0',
`IsBug` TINYINT(1) NULL DEFAULT NULL,
`UpdatedTime` TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`ID`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=3
;
3、填充数据
INSERT INTO `bugnullable` (`ID`, `Name`, `IsBug`, `UpdatedTime`) VALUES
(1, 'test', NULL, NULL),
(2, 'test1', 1, '2017-01-14 10:05:15');
4、dapper .net 测试代码
class Program
{
static void Main(string[] args)
{
/// <summary>
/// 数据库连接串
/// </summary>
var connectionString = ConfigurationManager.AppSettings["DefaultConnection"].Trim();
using (var conn = new MySqlConnection(connectionString))
{
//var bugs = conn.Query<BugNullable>("select * from BugNullable order by ID asc;").ToList(); no bug
SqlMapper.GridReader gr = conn.QueryMultiple("select * from BugNullable order by ID asc;");//bug
var bugs = gr.Read<BugNullable>().ToList();
bugs.ForEach(h => {
Console.WriteLine($"ID:{h.ID},Name:{h.Name},IsBug:{h.IsBug},UpdatedTime:{h.UpdatedTime}");
});
conn.Close();
}
Console.ReadLine();
}
}
public class BugNullable
{
public int ID { get; set; }
public string Name { get; set; }
public bool? IsBug { get; set; }
public DateTime? UpdatedTime { get; set; }
}
5、结果
6、解决方案:修改数据库字段大小(将bool对应的tinyint(1)适当扩大,如tinyint(2)或者bit(1))。
dapper 可空bool转换出错及解决方案的更多相关文章
- XAMPP:访问phpmyadmin出错的解决方案
来源:http://www.ido321.com/1246.html XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包,轻巧,用起来很方便.它提 ...
- .net 项目 调用webservice 出错,异常信息:对操作“xxx”的回复消息正文进行反序列化时出错。解决方案。
项目运行好好的,增加并更新WebService后,出错,捕获异常信息为:对操作“xxx”的回复消息正文进行反序列化时出错.解决方案. 认真分析异常信息后,得到关键提醒: {"读取 XML 数 ...
- 100怎么变成100.00 || undefined在数字环境下是:NaN || null在数字环境下是0 || 数组的toString()方法把每个元素变成字符串,拼在一起以逗号隔开 || 空数组转换成字符串后是什么?
100怎么变成100.00?
- IIS7.0出错的解决方案 IIS 状态代码:IIS详细错误代码以及解释
一.请求筛选模块被配置为拒绝包含双重转义序列的请求.HTTP 错误 404.11 - Not Found 1.单击 开始 . 在 开始搜索 框中, 键入 Notepad. 右击 记事本 , 然后单 ...
- oracle11g导出表时会发现少表,空表导不出解决方案
oracle11g导出表时会发现少表,空表导不出解决方案. 一:背景引入 oracle11g用exp命令导出数据库表时,有时会发现只导出了一部分表时而且不会报错,原因是有空表没有进行导出,之前一直 ...
- 05-数据类型转换(bool转换)
05-数据类型转换(bool转换)
- Win10应用商城删除后部分应用出错的解决方案
出错图示 解决方案 查找完整包名:Get-AppxPackage -allusers | Select Name, PackageFullName Add-appxpackage -register ...
- ArcGIS坐标系转换出错:Error 999999执行函数出错 invalid extent for output coordinate system
本文主要介绍在用ArcGIS做坐标系转换过程中可能会遇到的一个问题,并分析其原因和解决方案. 如下图,对一份数据做坐标系转换: 过了一会儿,转换失败了.错误消息如下: “消息”中提示,“执行函数出错 ...
- js 六种数据类型的区别及bool 转换判断
一.bool型转换判断: 1.true 和 1 比较是相同,false 和 0 比较是相同(是 “==” 比较),因为内部会实现数据类型的 转化,将true 转换成1,将false 转换成0, js ...
随机推荐
- WebStorm中Node.js项目配置教程(1)——创建项目
Node.js绝对是一个web开发的热点话题,作为web神器的WebStorm也是开发Node.js的佼佼者. 接下来就Node.js项目在WebStorm的配置操作就行详细的讲解,首先是创建项目.两 ...
- OpenSUSE 13.2使用VPN(PPTP)
新年开始,有时查询个资料或是下个软件包并不是那么愉快,决定使用付费VPN,他们使用的是用户名及密码的验证方式 在网上找到了一个教程,挺详尽的,如果想按照步骤能使用即可的原则,跟着我一起设置,想了解更多 ...
- leetcode第八题--String to Integer (atoi)
Problem: Implement atoi to convert a string to an integer. Hint: Carefully consider all possible inp ...
- 关于knob.js进度插件的使用
关于这个插件,妹的,第一次使用坑死爹了,各种不会,幸亏我有持之以恒的精神,最终还是让其臣服于我的胯下.... 1. 引入 head 部分添加knob.js,同时引入excanvas.js这个文件主 ...
- Apache2.4.x与Apache2.2.x的一些区别
改用Apache2.4一段时间了,一直没发现它和Apache2.2的有什么区别,一些基本配置都是差不多,直到前几天配置虚拟主机是才发现了一些小小的不同 一直以来我都是在htdocs目录下配置虚拟主机的 ...
- ubuntu下的apache+php+mysql的安装
平时我都时在windows下搭配apache+php+mysql环境的,只不过后来听别人说在linux下搭配apache+php+mysql更受欢迎,而且一般公司也是用这样的搭配,所以今天在试着在ub ...
- VS2010新建Web网站与新建Web应用程序的区别
在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...
- Android项目---语言适配
android多国语言文件夹 android多国语言文件夹文件汇总如下:(有些语言的书写顺序可能跟中文是相反的) 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中 ...
- How feedback work for your improvement
Why generally feedback is the perspective from others for some event. In China there is story,some k ...
- MVC文件上传与下载
MVC文件上传与下载 MVC文件上传与下载 想想自己从毕业到工作也有一年多,以前公司的任务的比较重,项目中有的时候需要用到什么东西都去搜索一下,基础知识感觉还没有以前在学校中的好.最近开始写博客,真的 ...