3/5 (21 avis)
Vue 7 633 fois - Téléchargée 593 fois
//exemple d'utilisation List<User> allUsers = dbMap.ListAll<User>(); Console.WriteLine("allUsers : "+ allUsers.Count); User predicate = new User(); predicate.Name = "d%"; List<User> dUsers = dbMap.ListCustom(predicate, iDbMap.ColumnConditions("USR_NAME")); Console.WriteLine("allUsers : " + dUsers.Count); User newUser = new User(); newUser.Name = "newName"; newUser.Pass = "newPass"; newUser.AvatarUrl = "myUrl"; dbMap.Insert(newUser); dbMap.GetAutoIncremented(newUser); Console.WriteLine("new Id : " + newUser.Id.ToString()); //test de jointures //ceci va nous donner les users habitant dans le 92 en remplissant leur ville //et rempliera seulement leurs voitures immatriculées en 1% de modele R5 CodePostal cpPred = new CodePostal(); cpPred.Code = "92%"; Voiture vPred = new Voiture(); vPred.Immatriculation = "1%"; ModeleVoiture mvPred = new ModeleVoiture(); mvPred.Nom = "R5"; MapQuery<User> mqU = dbMap.CreateMapQuery<User>(); mqU.AddJoin<CodePostal>("ville", cpPred, iDbMap.PropertyConditions("Code")); mqU.AddJoinList<Voiture>("voitures", vPred, iDbMap.PropertyConditions("Immatriculation")) .AddJoin<ModeleVoiture>("modele", mvPred, iDbMap.PropertyConditions("Nom")); List<User> users = dbMap.ExecuteQuery(mqU);
21 mars 2008 à 10:32
Pour nos applis au boulot d'ailleur, puis finalement j'ai abandonné car je pense que pour les perfs c'est pas top faudrais tester mais je pense que ton truc est parfait pour une petite appli ou des petites requêtes car mon avis c'est moin performant qu'un PL SQL.
Mais bon encore une fois faudrai tester :).
On a eu pas mal de problèmes de perfs car on voulais trop faire de traitements coté code et pas assez coté procédures stockée.
21 mars 2008 à 12:59
Un seul défaut peut être est qu'il fonctionne uniquement sur base de classe, si tu veux faire un système personnalisé par personne en gardant le "coeur" intacte, tu te dois d'avoir des classes de bases exemple pour les camions. Mais si un utilisateur dit "tiens, je rajouterais bien un champs pour connaitre les caractéristiques du pneu avant droit", il faut que le système puisse récupérer cette info et la mettre à jour. Si tu arrive à ça, alors chapeau. Déjà là, c'est un très bon code, j'ai même appris des choses, ça reste encore un peu flou, mais le code est très bon :)
Amicalement,
Tmcuh
21 mars 2008 à 17:54
ensuite, pour les procedures stockées, au debut j'avais prevu ca, mais je l'ai enlevé car mal géré. mais maintenant, je peux le rajouter, ce sera facile (et mieux géré qu'au début :p )
ensuite, je me suis appliqué pour les perfs : toutes les requettes (gérées avec des iDataParameters) sont stockées et réutilisées au besoin, donc le gros calcul sera fait uniquement pour la premiere des requetes identiques.
aussi pour les perfs, il peut etre lent de faire le tour des GetProperties() d'un object et de recupérer son attribut à chaque requette. pour cela, j'ai géré une dictionary qui stoque les clefs PropertyInfo/DbColumnAttribute. donc c'est aussi amélioré.
alors apres, pour le coup des tables par classe, c'est vrai que c'est pas terrible. seulement, pour l'instant, c'est suffisant. mais effectivement, on va vite avoir desoin de jointures. justement, j'y reflechis. je pense mettre un parametre optionnel à DbColumnAttribute pour specifier la table jointe, avec les conditions de jointure. mais ca ne va pas etre si simple que ca. il faut encore que j'en definisse l'architecture. a voir donc ;)
et ausi, coté code, si certaines choses paraisent floues, n'hesitez pas à me demander :) c'est peut etre aussi que le code n'est pas assez clair, et c'est donc à coriger ;)
Dargos
21 mars 2008 à 18:11
Puis en fonction de se qu'elle retourne refaire une autre requête derière.
Et si tu implémente les procédure stockées y a pas grand chose à faire à par le nom de la fonction se qu'elle retourne et les paramètre, et là tu peux pas trop réinventé la roue je pense?
25 mars 2008 à 14:16
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.