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);

如此,大功告成,新增,编辑,获取实体,均可正常解析


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM