Mafbinderhelper : une classe pour binder automatiquement vos classes sur vos requêtes

Soyez le premier à donner votre avis sur cette source.

Vue 8 238 fois - Téléchargée 552 fois

Description

Lassé de devoir écrire à la main le résultat de mes requêtes sur mes objets métier, j'ai créé cette classe qui se charge de tout toute seule...
En prime, elle est capable de construire les 4 requêtes de base (SELECT, UPDATE, DELETE, INSERT) toute seule.

Comment ça marche ?

En bien pour faire simple, vous devez tagger les classes représentant vos objects métier avec des attributs [MafTableBinding] et [MafColumnBinding]... ensuite, vous instanciez un binder via la classe générique Binder<T>... après, c'est tout simple :p

Source / Exemple :


// Exemple d'utilisation (à partir de la classe Comment présent dans le projet) :

DbConnection dbConnection;
Binder<Comment> commentBinder;

dbConnection = DbProviderFactories.GetFactory("System.Data.SqlClient").CreateConnection();
dbConnection.ConnectionString = @"Data Source=[...]";

commentBinder = new Binder<Comment>(this.dbConnection);

// Chargement d'une collection :
List<Comment> comments = commentBinder.GetAll();

// Chargement d'un seul commentaire :
Comment comment;
PrimaryKeyParameters pkp = commentBinder.GetPrimaryKeyParameters();
pkp["@comments_id"].Value = 999;
comment = commentBinder.GetSingle(pkp);

// Suppression d'un commentaire
commentBinder.Delete(comment);

// Modification d'un commentaire
comment.Commentaire = "Bla bla...";
commentBinder.Update(comment);

Conclusion :


Cette classe est succeptible d'être modifiée aux gré des optimisations que je pourrais à faire.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

tmcuh
Messages postés
463
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Méthodoligie intelligente, ça me plait bien :)
cs_pdl
Messages postés
134
Date d'inscription
mardi 20 novembre 2001
Statut
Membre
Dernière intervention
16 juin 2008
-
Petite question, j'ai des erreurs à la compile, mais c'est peut-être parce que j'utilise VS 2003.

dans la ligne :
return this.Find(
                    p => p.Name.Replace("@", string.Empty)
                                        .Equals(propertyName.Replace("@", string.Empty),
                                                StringComparison.InvariantCultureIgnoreCase));


la partie p => p.Name c'est nouveau comme syntaxe ?

D'avance merci,
Pierre
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32 -
oui ce code est compilé avec VS2008 et utilise les délégués anonymes de C# 3.

De toute façon, même sans ces délégués, ce code utilise massivement les Generics, donc inexploitable avec VS2003.
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
40 -
Très bonne source, très utile.
Ca fait une base bien propre pour ensuite l'adapter à ses besoins.

Le gros plus : Les méthodes courtes, lisibles, et commentées.
Tellement rare de voir du code aussi propre !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.