[ CS2GEN ] - GENERATEUR DE CODE NTIERS POUR BASES DE DONNÉES (V 2.1)

bu78 Messages postés 2 Date d'inscription lundi 2 janvier 2006 Statut Membre Dernière intervention 5 juillet 2007 - 5 juil. 2007 à 15:01
cs_Japonais Messages postés 2 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 27 mai 2011 - 30 oct. 2012 à 12:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/43343-cs2gen-generateur-de-code-ntiers-pour-bases-de-donnees-v-2-1

cs_Japonais Messages postés 2 Date d'inscription samedi 27 novembre 2004 Statut Membre Dernière intervention 27 mai 2011
30 oct. 2012 à 12:07
Excellent code. Thnx!
rgtimma Messages postés 1 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 7 janvier 2009
7 janv. 2009 à 17:20
salut romagny13, je suis nouveau dans le dev objet et je te remercie pour ton partage qui m'a beaucoup inspiré; j'ai toutefois quelque questions:
- l'utilsation de sqldependency exigent les classes du namespace sqlclient comme sqlcommand et sqlconnexion, est il possible de les avoir avec le Gestionnaire DbProviderHelper ?
-Comment pense tu que l'on puisse gerer les transactions ?
-Comment faire du reporting avec crystal report par exemple,je sais que l'on peut passer une collection d'objet à un etat mais il ne prend pas en charge le System.Nullable
cs_akhenaton Messages postés 18 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 10 juin 2008
10 juin 2008 à 23:52
Bonsoir Romagny,
je vous remercie pour ce truc, je dirai même que ça merite 12/10...finalement je met dixxxx.

Par contre j'ai une petite remarque :
lorsque je genere le projet à partir d'une DB sql server, dans la DAL de l'objet en question (Matable), la méthode ADDMaTable ne contient pas le champ [ID] par exemple qui est la clé de l'enregistrement ( et portant j'ai décoché Autoincremnt)

pouvez vous m'aider à resoudre ce truc....j'ai pas envie de l'ajouter manuelement car je vais perdre le temps que votre application vient de m'econommiser

Très cordialement
cs_akhenaton Messages postés 18 Date d'inscription mardi 9 avril 2002 Statut Membre Dernière intervention 10 juin 2008
10 juin 2008 à 16:06
Bonjour à tous,
Comment faire pour remplir un comboBox avec ça?
Merci
ecosmose Messages postés 46 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 30 septembre 2010
23 janv. 2008 à 16:09
Salut à Toi Romagny...

Et merci encore pour le partage des sources même si d'autres les exploitent à leur compte en essayant de porter tes lauriers...rendons à César ce qui lui appartient ;-)

Pourrais tu me confirmer que tu t'appuies (entièrement ?) sur NET2CsGEn ou si tu as changé beaucoup de choses du à la migration NET 1.0 -> NET 2.0

Julien Gourdet
Ecosmose : Association ecologiste et culturelle
orobin38 Messages postés 5 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 21 décembre 2007
2 nov. 2007 à 13:43
bonjour,
existe t-il d'parès vous, une application de ce type, qui génère du code en VB.net ?

merci
cordialement,
Olivier
zefiras Messages postés 1 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 23 octobre 2007
23 oct. 2007 à 08:53
Excelent!!!! Merci!
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
21 août 2007 à 00:18
un point particulier pour l'utilisation de SqlDependencyExpiration (cache) :
1 - vous devez impérativement indiquer le nom des colonnnes (et ne pas utiliser * de select * from nomtable)
2 - indiquer impérativement dbo devant chaque nom de table (exemple dbo.[Products]
3 - sqldependency marche pour les bases de données avec SQL Server 2005 et 2005 express sur "serveur" mais pas pour les fichiers de bases de donnnées *.mdf
4- enfin il se peut qu'il faille activer service broker avec une requete style ALTER DATABASE [DatabaseName] SET ENABLE_BROKER;

voila ainsi vous avez trés facilement un cache fonctionnel avec expirations et dependances (les expirations peuvent se cumuler exemple une expiration d'un cacheitem à une date precise + sqldependency,dans ce cas c'est à la premiere expiration que le cacheitem est supprimé exemple soit la date expire soit la table concernée subit une modification )
+
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
6 août 2007 à 08:50
Faudrait que je prenne une fois le temps de regarder tout ce que tu as fait.
Mais les sources avec beaucoup de code, c'est chiant, faut consacrer beaucoup de temps lol :D

En tout cas, y'a l 'air d'avoir du travail là derrière...
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
5 août 2007 à 00:19
cette application a du succes (et ca se comprend) donc je vais travailler encore dessus et oui je prefere amelorer des appli qui interessse beaucoup de monde que d'autres comme openxml (qui si elle est egalement interessante)ne touche en fait que assez peu de monde

j'ai etudié pas mal de generateur ou de framework(NHibernate,CodeFluent,Enterprise Library,...) .. je me suis inspiré un peu de ce que je trouvais de pas mal dans chacun (CodeFluent est excellent ;)) donc Cs2Gen represente l'implementation actuelle que je trouve la meilleure pour un accès aux données (en couches NTiers)
code fluent utilise des classes et des classes collections gérant à la fois les objets métiers et l'accès aux données par l'intermediaire de methodes static, cette approche est tres interessante mais finalement je prefere encore mieux decouper l'application
j'aime que le code generé soit proche de ce que j'aurais obtenu en tapant tout et ne pas avoir x assemblys en plus à referencer qui en fait serviront assez peu en comparaison
de plus je ne suis pas tant fan de l'utilisation de la reflection et je la fuis (même si elle est quand meme utiliser ici)
pour cs2Gen je suis en train de reflechir et etudier la possibilité egalement de generer les composants de la couche GUI (pésentation) pour ASP.NET (avec des customs controls), il se peut egalement ue j'y reflechisse pour windows forms qui serait finalement plus facile (lol mais je crois que j'aime quand je peine un peu)

il y a egalement d'autres ameliorations auquelles je pense (le cache : avoir une date,un delai d'expiration),une gestion de la securite (avec encryption dans le fichier de configuration peut etre)

donc peut etre qu'une grosse mise a jour va arriver
cs_girardhenri Messages postés 3 Date d'inscription samedi 12 mai 2007 Statut Membre Dernière intervention 14 février 2009
12 juil. 2007 à 21:52
Merci pour ce code qui tourne très bien sur orcas avec net2genxx
Après conversion le code compile super :)
Henri
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
6 juil. 2007 à 00:23
pour le tinyint c'est parce qu'on recupere le datatype system.byte(System.Byte)lors de la récupération du schema de la table, et donc c'est confondu avec une image(dont le type est System.Byte[])
bon il faudra que je pousse la gestion des types de données un peu plus
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
5 juil. 2007 à 20:27
a quoique merci tu viens de me montrer une erreur :p (DBNull)
ba je corrige
oui si vous voyez des erreurs n'hesitez pas à m'en faire art
autant que je mette l'application le plus au point possible
ou si vous avez des idées notamment au niveau de la gestion de la connexion
++
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
5 juil. 2007 à 20:05
je prends un exemple:
if (oContact.ContactAge.HasValue)
oDbCommand.Parameters.Add(DbProviderManager.CreateParameter("@ContactAge",DbType.Int32,oContact.ContactAge));
else
oDbCommand.Parameters.Add(DbProviderManager.CreateParameter("@ContactAge",DbType.Int32,DBNull.Value));

je ne passe une valeur nulle que si le nullable reçu n'a pas de valeur (HasValue)
les nullables et DBNull.value permettent de gérer les champs en base de données acceptant les valeurs nulles(AllowDBNull)

au niveau des types de données il est possible qu'il y ait en effet quelques points à revoirau niveau des images)

sinon ce n'est pas ^parfait encore et il faudrait par exemple que je vois comment améliorer la gestion de la connexion, même si je ne suis pas pour l'utilisation de singleton
+
bu78 Messages postés 2 Date d'inscription lundi 2 janvier 2006 Statut Membre Dernière intervention 5 juillet 2007
5 juil. 2007 à 15:01
Bonjour, je réalise un projet similaire depuis pas mal de temps déjà, englobant le maximum de règles organisationnelles possible.
J'ai donc été particulièrement interessé par ces sources. Avant tout, donc, Merci.

J'ai noté quelques petites corrections à faire (à moins que le point ne m'échappe, ce qui est tout à fait possible).
Les voici :

Le type "TinyInt" est vu comme un type "Image". Ce point impacte bien sur le code SQL généré mais aussi le type des parameters créés dans le DAL.

Dans le DAL, sur les méthodes Add et Update, il me semble que tu as oublié d'utiliser les propriétés de l'objet passé en paramètre. System.DbNull.value est passé pour chaque propriété (à moins que ce ne soit volontaire ...)

Exemple :
oDbCommand.Parameters.Add(DbProviderManager.CreateParameter("@Reference",DbType.String,DBNull.Value));

En lieu et place de :
oDbCommand.Parameters.Add(DbProviderManager.CreateParameter("@Reference", DbType.String, oEnumeration.Reference ));

Sinon, ce projet est interessant, rapide, efficace, le code généré est lisible, efficace ... Une bonne base.
Rejoignez-nous