Dapper解析嵌套的多层实体类
在作项目的时候,我会将一些不涉及查询的字段,形成JSON统一存放在一个字段中,向下面这样的来建实体类,
public class WechatModel { public string wechatid { get; set; } public WxMpModel wxmpinfo { get; set; } }
public class WxMpModel { public string appid { get; set; } public string secret { get; set; } public string token { get; set; } }
表字段为
[wechatid] [varchar](50) NOT NULL, [wxmpinfo] [varchar](max) NULL
但是在用Dapper向数据库存取的时候,Dapper会报异常,无法序列化,解决方法为,新建一个转换类,在使用前注册一下
public class JsonConvertHandler<T> : SqlMapper.TypeHandler<T> { public override T Parse(object value) { return JsonConvert.DeserializeObject<T>((string)value); } public override void SetValue(IDbDataParameter parameter, T value) { parameter.Value = JsonConvert.SerializeObject(value); } }
使用示例
SqlMapper.AddTypeHandler(new JsonConvertHandler<WxMpModel>()); DapperHelper.Execute(strSql.ToString(), model);
如此,大功告成,新增,编辑,获取实体,均可正常解析
版权声明:本文为icejd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。