如何使用Dapper映射MySQL JSON列

6

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

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

我希望数据能够映射到 C# 中的 List<MyObject> 类型。
1个回答

13

您为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>的属性,则会正确地进行序列化和反序列化。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接