[ cs2gen ] - generateur de code ntiers pour bases de données (v 2.1)

Soyez le premier à donner votre avis sur cette source.

Vue 21 268 fois - Téléchargée 2 231 fois

Description

Cette application ne génère du code ne pouvant être utilisable qu?à partir du Framework .NET 2.0

Cette application est un peu la version 2 d?un générateur de code que j?avais posté , je le poste en nouvelle source car de nombreuses personnes pourraient etre interessées par le précédent(qui génére du code VB.NET et C# pour le Framework .NET 1.0 et 2.0)

I - Présentation

Sont pris en charge :
- Génération couches BLL,BusinessObjects,DAL
- Caching (expirations disponibles : absolue (à une date donnée),relative(dans un certains temps),SqlDependency(le cache est vidé si une modification a lieue en base SQL Server),FilDependency(pour bases de données ACCESS ou autres fichiers xml,etc...)
- Serialization Xml (reposant sur les generics)
- librairie d?aide pour les predicats des listes generiques
- Le trie (IComparer)
- Génération des fichiers de configuration de l?application (App.config et Web.config) contenant les chaines de connexion
- Encryption de la section connectionstrings des fichiers de configuration(App.config) possible
- Génération du script SQL (avec création des tables et procédures stockées/Views)
- Etc.

II Démarche :

1 ? générer le code puis ouvrir la solution visual studio qui vient d'etre générée
2 - ajouter un projet pour la couche présentation :
- Windows Forms Application
- ASP.NET Application
- WPF Application
- ?
3 ? Ajouter une référence aux couches
> BLL
> BusinessObjects
4 - Ajouter une référence aux librairies Cs2Gen.Caching.dll et Cs2Gen.Predicate.dll
5 ? Ajouter le fichier de configuration dans la couche présentation
> App.config (Windows Forms ou WPF Application)
> Web.config (ASP.NET Application)

Notes :
- la librairie Cs2Gen.Predicate.dll offre des facilités pour créer des predicats,
bien entendu vous pouvez utiliser les méthodes anonymes,les predicates(délégués) ou vos propres méthodes avec les generics

- la libraire Cs2Gen.Caching.dll est moins complète que celle d'enterprise library,toutefois
vous pouvez ici tres facilement ajouter une dépendance au cache avec SqlDependency(SQL Server)

Ce projet est disponible sur CodePlex(sources,runtime) >
http://www.codeplex.com/cs2gen

Bon les sources sont fournies xp
Profitez en car je risque de ne pas poster des sources aussi souvent
J?espère pour autant ne pas voir arriver des copies !!

il y a également un bon petit tutorial de Thomas Lebrun sur Developpez.com
http://morpheus.developpez.com/architecture/

lire une image d'une base de données ou insérer une image dans une base de données (méthodes qui sont générées et disponible dans la classe Utilities)
http://romagny13.over-blog.com/article-11277632.html

+

Source / Exemple :


//
            // SAMPLES
            //
            BLLManager bLLManager = new BLLManager();
            List<Contact> Contacts;

            // Get all
            Contacts = bLLManager.ContactBLL.GetContacts();
            dataGridView1.DataSource = Contacts;

            // get element(s) of relation
            List<Contact> result = bLLManager.ContactBLL.GetContactsOfCategory(1);
            Category category = bLLManager.ContactBLL.GetCategoryOfContact(contact);

            // filter + sort (Business objects)
            List<Contact> result = Contacts.FindAll(
                PredicateBuilder<Contact>.MakePredicate(
                    PredicateExpression.StartsWith("Contactname", "A")
                    )
                );
            result.Sort(new Contact.ContactnameComparer(SorterMode.Ascending));
            dataGridView1.DataSource = result;

            // Add
            bLLManager.ContactBLL.AddContact(new Contact(4, "Dupond", 25, 1));

            // Update
            Contact result = Contacts.Find(PredicateBuilder<Contact>.MakePredicate(
                PredicateExpression.Eq("ContactID", 4)
                  )
               );
            result.Contactname = "Lama";
            bLLManager.ContactBLL.UpdateContact(result);

            // Delete
            Contact result = Contacts.Find(PredicateBuilder<Contact>.MakePredicate(
                PredicateExpression.Eq("ContactID", 4)
                  )
               );
            bLLManager.ContactBLL.RemoveContact(result);

            //Xml Serialization              
            bLLManager.ContactBLL.SerializeContacts(@"c:\Contacts.xml", Contacts);
            List<Contact> result = bLLManager.ContactBLL.DeserializeContacts(@"c:\Contacts.xml");
		

	   // caching sample : SQL Server (with SqlDependencyExpiration)
           CacheManager cacheManager=new CacheManager();
 	   if (cacheManager.Contains("myKey"))
            {
              Contacts =(List<Contact>) cacheManager.GetData("myKey").Value;
            }
            else
            {
                Contacts = bLLManager.ContactBLL.GetContacts();
                cacheManager.Add("mykey", Contacts, new ICacheItemExpiration[] { new SqlDependencyExpiration(new SqlCommand("SELECT ContactID,ContactName,ContactFirstName,ContactAge From dbo.[Contact]", new SqlConnection("Data Source=.;Initial Catalog=ContactDB;Integrated Security=SSPI;"))) }); 
            }
	    // caching sample : ACCESS database file (with FileDependency) 	    
            if (cacheManager.Contains("myKey"))
            {
                Contacts =(List<Contact>) cacheManager.GetData("myKey").Value;
            }
            else
            {
                Contacts = bLLManager.ContactBLL.GetContacts();
                cacheManager.Add("mykey", Contacts, new ICacheItemExpiration[] { new FileDependency(@"C:\Contacts.mdb") }); 
            }

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
samedi 27 novembre 2004
Statut
Membre
Dernière intervention
27 mai 2011

Excellent code. Thnx!
Messages postés
1
Date d'inscription
lundi 25 septembre 2006
Statut
Membre
Dernière intervention
7 janvier 2009

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
Messages postés
18
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
10 juin 2008

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
Messages postés
18
Date d'inscription
mardi 9 avril 2002
Statut
Membre
Dernière intervention
10 juin 2008

Bonjour à tous,
Comment faire pour remplir un comboBox avec ça?
Merci
Messages postés
46
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
30 septembre 2010

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
Afficher les 15 commentaires

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.