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