Chaîne de cartes à guider avec Dapper

c# dapper orm sql

Question

J'utilise Dapper pour définir des outils de test de charge devant accéder à une base de données PostgreSQL. Cette version particulière de PostgreSQL ne prend pas en charge les GUID en mode natif. Les valeurs GUID sont donc stockées sous forme de chaînes de 32 caractères. Les valeurs sont converties en chaînes en utilisant someGuid.ToString("N") , la conversion en Guid peut être effectuée en utilisant le new Guid(stringValueFromColumn) .

Ma question est la suivante: comment puis-je demander à Dapper de lire les chaînes et de les reconvertir en Guids?

J'ai essayé de modifier le mappage DbType mais cela ne fonctionne pas.

Réponse acceptée

Le moyen le plus simple de le faire (sans attendre sur dapper) est peut-être d’avoir une deuxième propriété:

public Guid Foo {get;set;}

public string FooString {
    get { return Foo.ToString("N"); }
    set { Foo = new Guid(value); }
}

Et dans votre requête, alias la colonne en tant que FooString .

Bien sûr, alors la question se pose: Dapper devrait-il supporter les propriétés privées pour ce type de chose? À quoi je dis: probablement.


Réponse populaire

C'est une vieille question mais je pense qu'elle a besoin d'être mise à jour car Dapper supporte maintenant les propriétés privées, auxquelles Marc a fait référence dans sa réponse.

private String UserIDString { get; set; }
public Guid UserID
{
    get
    {
        return new Guid(UserIDString);
    }
    private set
    {
        UserID = value;
    }
}

Ensuite, dans SQL, attribuez à votre colonne ID un alias pour le mapper à la propriété privée et non à la propriété réelle:

SELECT UserID AS UserIDString FROM....



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi