Créer une convention pour les identifiants à l'aide de dapper

c# dapper dapper-extensions dommel

Question

J'aimerais créer une convention pour définir la colonne nommée "Id" comme clé primaire, je me suis penché sur la documentation et jusqu'à présent, je devais le faire manuellement classer par classe comme: avec dommel:

public class ProductMap : DommelEntityMap<TEntity>
{
    public ProductMap()
    {
        Map(p => p.Id).IsKey();
    }
}

Je voudrais quelque chose de plus comme:

    public ConventionMap()
    {
        Properties<int>().Where(p=>p.Name.ToLower()=="id").isKey();
    }

il pourrait s'agir d'extensions dommel ou dapper ou de tout autre, j'ai juste cette implémentation à parler couramment.

aucun conseil? Merci!

Réponse acceptée

Dommel vous permet de créer un IKeyPropertyResolver personnalisé.

Votre implémentation ressemblerait à:

public class CustomKeyPropertyResolver : DommelMapper.IKeyPropertyResolver
{
    public PropertyInfo ResolveKeyProperty(Type type)
    {
        return type.GetProperties().Single(p => p.Name.ToLower() == "id");
    }
}

Qui devrait être enregistré au démarrage de l'application en utilisant cette ligne de code:

DommelMapper.SetKeyPropertyResolver(new CustomKeyPropertyResolver());

Vous n'avez pas besoin de Dapper.FluentMap (ou Dapper.FluentMap.Dommel) pour cela. Voir aussi: la documentation .




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