如何使用Dapper映射MySQL JSON列

.net c# dapper json mysql

我在MySQL數據庫中有一個表,其中包含一個JSON數據類型列。是否可以檢索存儲在該列中的JSON數據並使用Dapper映射到我的c#類?下面是關於數據如何存儲在列中的示例JSON。

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

我希望數據映射到C#中的List<MyObject>類型。

熱門答案

您為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>類型的屬性,它將被正確序列化和反序列化。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow