我在 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/