Come mappare la colonna MySQL di MySQL usando Dapper

.net c# dapper json mysql

Domanda

Ho una tabella nel database MySQL che contiene una colonna del tipo di dati JSON. È possibile recuperare i dati JSON memorizzati in quella colonna e mappare alla mia classe c # usando Dapper? Di seguito è riportato un JSON di esempio su come i dati vengono archiviati nella colonna.

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

Voglio che i dati vengano mappati su un List<MyObject> digitare C #.

Risposta popolare

Si registra un ITypeHandler per List<MyObject> o qualunque sia il tipo di proprietà.

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());

Dopodiché, se hai un nome di colonna che si associa a una proprietà di tipo List<MyObject> , verrà serializzato e deserializzato correttamente.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow