在作項目的時候,我會將一些不涉及查詢的字段,形成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);
如此,大功告成,新增,編輯,獲取實體,均可正常解析
