c# - 如何使用 Dapper 映射 MySQL JSON 列

标签 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": ""
        }
]

我希望将数据映射到 List<MyObject>输入 C#。

最佳答案

您为 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> 类型属性的列名它将被正确地序列化和反序列化。

关于c# - 如何使用 Dapper 映射 MySQL JSON 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46546556/

相关文章:

c++ - 在 Visual Studio 2012 中为 C++ CLR 支持的 DLL 项目将 .NET Framework 4.5 降级到 4?

c# - 使用早期绑定(bind)从 CRM 检索第一条记录

php - 为什么 if 语句在此循环中不起作用? PHP

以自动增量 id 为键的缺失值的 MySQL 性能

c# - 多线程锁定/监控

c# - 即使发生未处理的异常,也要保持应用程序运行

用户输入数据的 C# 存储

c# - 获取对象的 ToString() 以显示 '\0' 作为空字符的字符串?

C#秒表类

java - 我将 JSON 插入 mysql 表的语法有什么问题?