Wie man die MySQL JSON-Spalte mit Dapper abbildet

.net c# dapper json mysql

Frage

Ich habe eine Tabelle in MySQL-Datenbank, die eine JSON-Datentypspalte enthält. Ist es möglich, die in dieser Spalte gespeicherten JSON-Daten abzurufen und mit Dapper? Im Folgenden finden Sie ein Beispiel JSON darüber, wie Daten in der Spalte gespeichert werden.

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

Ich möchte, dass die Daten in C # einem List<MyObject> -Typ zugeordnet werden.

Beliebte Antwort

Sie registrieren einen ITypeHandler für List<MyObject> oder den Typ der Eigenschaft.

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

Wenn Sie danach einen Spaltennamen haben, der einer Eigenschaft vom Typ List<MyObject> , wird diese serialisiert und deserialisiert.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow