如何使用Dapper映射MySQL JSON列

时间:2017-10-03 14:05:36

标签: c# mysql .net json dapper

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

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

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

1 个答案:

答案 0 :(得分:5)

您为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<MyObject>类型的属性,则会对其进行序列化和反序列化。