Générateur de code - [architecture 2-tiers - 3-tiers - n-tiers] [vb - csharp] [.net 1.1 et .net 2.0] [access,sql server][ge

Soyez le premier à donner votre avis sur cette source.

Vue 38 879 fois - Téléchargée 4 116 fois

Description

Bonsoir,
Voila mon début de générateur de code
L'objectif de ce générateur est simple :
générer tout le code d'accès aux données, vous n'avez plus qu'à coder la couche présentation (en fait faire simplement appel aux méthodes appropriées)
de cette manière vous pouvez définir une couche présentation en windows forms (.NET 1.x,.NET 2.0), ASP.NET,mais aussi .NET 3.0 (WPF) trés facilement

- Choix de "langue" dans laquelle est généré le code
> Français
> Anglais
-Projet Visual Studio généré:
> Projet bibliothèque de classes .NET 2.0 Visual Studio 2005
> Projet bibliothèque de classes .NET 1.x Visual Studio 2003
- Choix de l'architecture de l'application :
> 2-tiers : couche présentation (IHM) + couche persistance (accès aux données)
> 3-tiers : couche présentation (IHM) + couche métier (classes et classes collections) + couche persistance (accès aux données)
> n-tiers : couche présentation (IHM) + Controleur + couche métier (classes et classes collections) + couche persistance (accès aux données)

- Choix du Language:
>C#
>VB.NET
-Génération pour une source de données :
>Access
>Sql Server

- Génération Script SQL de création de la base de données (procédures stockées en plus pour Sql Server)

La génération se base sur la structure de la base de données (tables,champs,relations,contraintes)
- Vous pouvez définir votre base de données dans le générateur à partir de « zéro »
- Ou ouvrir une base de données (Access ou Sql Server 2000-2005) (les informations de la base seront extraites)
- Vous avez également la possibilité de sauvegarder le projet en cours .

Note :
Pour entrer facilement le script SQL de création de la base pour Access je vous conseille d?utiliser cet outil que j?avais posté, bien pratique :
http://www.csharpfr.com/codes/OUTIL-MANAGEMENT-BASES-DONNEES-POUR-ACCESS-MDB-FICHIERS_39559.aspx

++

Objectifs et idées suivantes :
- Génération couche présentation pour .net 1.1 et .net 2.0 (voir également pour Asp.net)
- Gestion complete des acces concurrentiels
- gestion acces concurrentiel optimiste
- optimisation et amélioration du code

Source / Exemple :


//// Ne pas oublier de renseigner la chaine de connexion à la base de données
            BData.OleDbConnected.sConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\romagny\Mes documents\Access\Contacts.mdb";

            // ******** 2 tiers *******************
            //// la couche UI(interface utilisateur) interagit avec la classe couche persistance (BData) avec le code généré pour architecture 2-tiers
            BData.OleDb.CONTACT oCONTACT;
            oCONTACT = new BData.OleDb.CONTACT();
            DataTable oDataTable = oCONTACT.FillDataTableCONTACTs();

            //// Afficher 
            dataGridView1.DataSource = oDataTable;

            // ******** 3 tiers *******************
            // la couche UI(interface utilisateur) interagit avec la couche metier (BObject)
            BObject.CONTACTs oCONTACTs;
            oCONTACTs = new BObject.CONTACTs();
            oCONTACTs.LoadCONTACTs();
            // Afficher la liste (ici j'utilise simplement la datasource mais on peut personnaliser le datagridview par code en definissant les colonnes,lignes et cellules)
            dataGridView1.DataSource = oCONTACTs;

            // ******** n tiers *******************
            // la couche UI(interface utilisateur) interagit avec le controleur
            Ctrl.CONTACT oCONTACT;
            oCONTACT = new Ctrl.CONTACT();
            oCONTACT.LoadCONTACTs();
            // Afficher
            dataGridView1.DataSource = oCONTACT.BObjectCONTACTs;

            // ici un contact va etre ajouter a la fois a la collection de contacts et ajoute en base de données
            oCONTACT.AddBOjectAndBDataCONTACT(1, "Dupond", "Dominique", "", 1, 2, "1960/03/10");
            
            // ici le contact n'est ajouté qu'à la collection de contacts
            oCONTACT.AddBObjectCONTACT(1, "Dupond", "Dominique", "", 1, 2, "1960/03/10");
            // pour mettre à jour la base il faut faiure appel à la methode UpdateAllBData()
            // l'ensemble des lignes ayant ete ajoutes,modifiees,supprimees en local seront mises a jour
            // en cas de probleme d'acces concurrentiel l'erreur de la ligne est stocker dans son rowstate (ex : oCONTACT.BObjectCONTACTs[0].RowError)
            oCONTACT.UpdateAllBData();
            //
            // annuler les changements apportes a une ligne en local > il faut passer la "cle primaire"
            oCONTACT.RejectChangesBObjectCONTACT(10);
            // annuler tous les changements apportes en local
            oCONTACT.RejectChangesBObjectCONTACTs();

Conclusion :


Démarche :
- Ouvrir le projet (en double cliquant dessus)
- Ajouter un projet Windows Forms à la solution par exemple
- Possibilité de réorganiser les fichiers ,projets (ex : créer un projet pour la couche métier,un autre projet pour la couche perssistance,un pour le controleur,un pour la couche présentation)
- Ajouter la ou les références aux projets

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
11
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
30 juillet 2007

Dommage que tu n'es pas fait de select avec en paramètre les clé primaires
Messages postés
11
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
30 juillet 2007

c'est énorme !
Messages postés
46
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
30 septembre 2010

Excellente source pour créer une architecture N-Tiers d'un prtojet CLient / Serveur en .NET

Manque peut être la sérialisation des objets métiers par une factory ou un service..
Messages postés
46
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
30 septembre 2010

Salut à Toi Romagny...

J'étudie en ce moment avec une grande attention tes sources...Je tiens tout d'abord à te féliciter pour la complétude et le souci du détail que tu apportes à tes applis...well done !

Actuellement je travaille sur la sérialisation et désérialisation des objets de mon Projet qui englobe un client lourd (WinForm) .net 2.0 et une BD Sql Server 2000 (avec des import export Excel de 2000 à 2007 mais on verra plus tard)..

Or je me demandais si tu pouvais me donner ton avis sur la génération de manière dynamique (lors de l'initialisation du programme et non en classe fixe dans le projet source) des objets Métiers qui seront alors des miroirs des tables de la BD.

je souhaitais coder un outil générique qui génére les objets métiers puis des listes de ces objets et d'accèder aux objets par la couche DAO (Data Acces Object) qui adapte ensuite les traitements contrôleurs et affiche correctement les GUI (pour qu'il retrouve ses petits ;p)et non par un nommage (fixe) des attributs dans des .cs...comme le fait ton générateur (sinon cela ne seraitpas un générateur ;-)

L'objet de mon commentaire n'est pas de te demander les sources du DLL mais de te demander si au niveau pratique il est mieux de fixer des objets métiers dans un projet ou créer des objets métiers dynamiquement lorsqu'une BD est modifiée régulièrement (modification des noms de champs, ajout de nouvelles tables etc...) sachant que l'affichage est tout de même fixé..

Voila si cela t'intéresse je pourrais t'envoyer et partager mes sources ...et si c'est validé les poster sur Code-sources...je précise que je suis novice en .NET mais que je programme depuis 5 ans (Java, C++, Objet, SQL etc...)

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 ;-)

Pourrasi tu aussi nous dire quels sont les liens avec ton autre appli (plus récentes) CS2GEN

Merci

Julien Gourdet
Ecosmose : Association ecologiste et culturelle
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
2
arf j'avais pas vu pour le code je n'ai pas trop envie car même si ce n'est pas un chef d'oeuvre, je risque trop de voir arriver des copies :p
Afficher les 48 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.