【问题标题】:How to map MySQL JSON column using Dapper如何使用 Dapper 映射 MySQL JSON 列
【发布时间】:2018-03-14 18:24:03
【问题描述】:

我在 MySQL 数据库中有一个表,其中包含一个 JSON 数据类型列。是否可以检索存储在该列中的 JSON 数据并使用 Dapper 映射到我的 c# 类?下面是一个关于数据如何存储在列中的示例 JSON。

[
        {
            "ServerName": "",
            "Priority": 1,
            "FilesystemBasePath": "",
            "IsAvailable": 1,
            "ApplicationDocumentType": ""
        },
        {
            "ServerName": "",
            "Priority": 2,
            "FilesystemBasePath": "",
            "IsAvailable": 1,
            "ApplicationDocumentType": ""
        }
]

我希望将数据映射到 C# 中的 List<MyObject> 类型。

【问题讨论】:

    标签: c# mysql .net json dapper


    【解决方案1】:

    您为List<MyObject> 或任何属性类型注册一个 ITypeHandler。

    public class MyClass
    {
        public List<MyObject> MyObjects {get; set; }
    }
    
    public class JsonTypeHandler: SqlMapper.ITypeHandler
    {
       public void SetValue(IDbDataParameter parameter, object value)
       {
           parameter.Value = JsonConvert.SerializeObject(value);
       }
    
       public object Parse(Type destinationType, object value)
       {
           return JsonConvert.DeserializeObject(value as string, destinationType);
       }
    }
    
    SqlMapper.AddTypeHandler(typeof(List<MyObject>),new JsonTypeHandler());
    

    之后,如果您有一个映射到 List&lt;MyObject&gt; 类型属性的列名,它将被正确序列化和反序列化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 2012-08-18
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 2015-06-26
      相关资源
      最近更新 更多