begin process at 2012 02 08 05:35:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > GENERIC DAL

GENERIC DAL


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Source .NET ( DotNet ) Classé sous :DAL, basededonnes, ORM, generics Niveau :Initié Date de création :13/06/2008 Date de mise à jour :02/09/2008 11:23:57 Vu / téléchargé :5 510 / 171

Auteur : zebobo5

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Simple couche d'accès aux données utilisant les génériques pour dotNet 2.

Ce projet n'est qu'une approche simpliste de l'accès aux données par génériques.

Cette mise en place de la DAL a été pensé pour les bases de données mal architecturées (et oui cela arrive chez certains clients :( )

- Elle gère, l'insertion, update, delete
- Possibilité de définir quel champ est à renvoyer dans le ToString() de la table mappée
- Événements sur toutes les actions
- Generic (donc on évite un maximum d'erreur!!!)

Source

  • //Generation du mapping de la table PERSONS ET ORDERS
  • /*------------------------------------------------------*/
  • //Creation de la connection
  • System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestOrm;Integrated Security=True");
  • ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.AddConnection("connection", connection);
  • //Generation du mapping
  • ZeBobo5.LibraryHelper.Orm.OrmDataElementGenerator.Generate("connection", "PERSONS");
  • ZeBobo5.LibraryHelper.Orm.OrmDataElementGenerator.Generate("connection", "ORDERS");
  • //Fermeture de la connection
  • ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.CloseConnection("connection");
  • // ou pour toutes les connections
  • ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.CloseAndDisposeAllConnections();
  • /*------------------------------------------------------*/
  • //Exemple de mapping généré pour la table PERSONS
  • /*------------------------------------------------------*/
  • using System;
  • using ZeBobo5.LibraryHelper.Orm;
  • public class PERSONS : OrmDataElementBase<PERSONS>
  • {
  • public OrmValues<Int32> ID
  • {
  • get
  • {
  • return Fields.ID.Values(this);
  • }
  • }
  • public OrmValues<String> NAME
  • {
  • get
  • {
  • return Fields.NAME.Values(this);
  • }
  • }
  • public OrmValues<Int32> AGE
  • {
  • get
  • {
  • return Fields.AGE.Values(this);
  • }
  • }
  • public OrmValues<Int32> YEAR
  • {
  • get
  • {
  • return Fields.YEAR.Values(this);
  • }
  • }
  • public class Fields
  • {
  • public static OrmField<PERSONS, Int32> ID = new OrmField<PERSONS, Int32>("ID", 0);
  • public static OrmField<PERSONS, String> NAME = new OrmField<PERSONS, String>("NAME", "");
  • public static OrmField<PERSONS, Int32> AGE = new OrmField<PERSONS, Int32>("AGE", 0);
  • public static OrmField<PERSONS, Int32> YEAR = new OrmField<PERSONS, Int32>("YEAR", 0);
  • }
  • }
  • /*------------------------------------------------------*/
  • //Utilisation de la DAL
  • /*------------------------------------------------------*/
  • //Creation de la connection
  • System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestOrm;Integrated Security=True");
  • ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.AddConnection("connection", connection);
  • //Creation des clés étrangères
  • ZeBobo5.LibraryHelper.OrmDatabaseSchema.AddLink(
  • new OrmDataLink<PERSONS, ORDERS>(PERSONS.Fields.ID, ORDERS.Fields.PERSON_ID),
  • new OrmDataLink<PERSONS, ORDERS>(PERSONS.Fields.YEAR, ORDERS.Fields.ORDERYEARDATE));
  • //Recuperation d'une liste de personnes
  • OrmDataElementList<PERSONS> lstPersonnes =
  • ZeBobo5.LibraryHelper.Orm.OrmDataFactory<PERSONS>.
  • Select("connetion").
  • Where(OrmWhereFactory.Comparators<PERSONS>.LessThan(PERSONS.Fields.AGE, 25)).
  • OrderBy(OrmOrderByFactory<PERSONS>.Asc(PERSONS.Fields.NAME)).
  • Execute();
  • foreach (PERSONS item in lstPersonnes)
  • {
  • Console.WriteLine(string.Format("{0} a passé {1} commande(s).", item.NAME.CurrentValue, item.LinkTo<ORDERS>().Count);
  • }
  • //Mise à jour de données
  • lstPersonnes[0].Name.CurrentValue = "Toto";
  • Console.WriteLine(string.Format("Valeur originale du NAME : {0}", lstPersonnes[0].Name.OriginalValue);
  • Console.WriteLine(string.Format("Valeur nouvelle du NAME : {0}", lstPersonnes[0].Name.CurrentValue);
  • lstPersonnes.SaveChanges();
  • ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.CloseAndDisposeAllConnections();
//Generation  du mapping de la table PERSONS ET ORDERS
/*------------------------------------------------------*/

//Creation de la connection
System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestOrm;Integrated Security=True");
ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.AddConnection("connection", connection);

//Generation du mapping
ZeBobo5.LibraryHelper.Orm.OrmDataElementGenerator.Generate("connection", "PERSONS");
ZeBobo5.LibraryHelper.Orm.OrmDataElementGenerator.Generate("connection", "ORDERS");

//Fermeture de la connection
ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.CloseConnection("connection");
// ou pour toutes les connections
ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.CloseAndDisposeAllConnections();


/*------------------------------------------------------*/
//Exemple de mapping généré pour la table PERSONS
/*------------------------------------------------------*/
using System;
using ZeBobo5.LibraryHelper.Orm;

public class PERSONS : OrmDataElementBase<PERSONS>
{
    public OrmValues<Int32> ID
    {
        get
        {
            return Fields.ID.Values(this);
        }
    }
    public OrmValues<String> NAME
    {
        get
        {
            return Fields.NAME.Values(this);
        }
    }
    public OrmValues<Int32> AGE
    {
        get
        {
            return Fields.AGE.Values(this);
        }
    }
    public OrmValues<Int32> YEAR
    {
        get
        {
            return Fields.YEAR.Values(this);
        }
    }
    public class Fields
    {
        public static OrmField<PERSONS, Int32> ID = new OrmField<PERSONS, Int32>("ID", 0);
        public static OrmField<PERSONS, String> NAME = new OrmField<PERSONS, String>("NAME", "");
        public static OrmField<PERSONS, Int32> AGE = new OrmField<PERSONS, Int32>("AGE", 0);
        public static OrmField<PERSONS, Int32> YEAR = new OrmField<PERSONS, Int32>("YEAR", 0);
    }
}

/*------------------------------------------------------*/
//Utilisation de la DAL
/*------------------------------------------------------*/

//Creation de la connection
System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestOrm;Integrated Security=True");
ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.AddConnection("connection", connection);

//Creation des clés étrangères
ZeBobo5.LibraryHelper.OrmDatabaseSchema.AddLink(
   new OrmDataLink<PERSONS, ORDERS>(PERSONS.Fields.ID, ORDERS.Fields.PERSON_ID),
   new OrmDataLink<PERSONS, ORDERS>(PERSONS.Fields.YEAR, ORDERS.Fields.ORDERYEARDATE));


//Recuperation d'une liste de personnes
OrmDataElementList<PERSONS> lstPersonnes =
   ZeBobo5.LibraryHelper.Orm.OrmDataFactory<PERSONS>.
      Select("connetion").
      Where(OrmWhereFactory.Comparators<PERSONS>.LessThan(PERSONS.Fields.AGE, 25)).
      OrderBy(OrmOrderByFactory<PERSONS>.Asc(PERSONS.Fields.NAME)).
      Execute();

foreach (PERSONS item in lstPersonnes)
{
   Console.WriteLine(string.Format("{0} a passé {1} commande(s).", item.NAME.CurrentValue, item.LinkTo<ORDERS>().Count);
   
}
//Mise à jour de données
lstPersonnes[0].Name.CurrentValue = "Toto";
Console.WriteLine(string.Format("Valeur originale du NAME : {0}", lstPersonnes[0].Name.OriginalValue);
Console.WriteLine(string.Format("Valeur nouvelle du NAME : {0}", lstPersonnes[0].Name.CurrentValue);
lstPersonnes.SaveChanges();

ZeBobo5.LibraryHelper.Core.Sql.SqlHelper.CloseAndDisposeAllConnections();

 Conclusion

Les sources sont disponible sur http://libraryhelper.googlecode.com/ pour les évolutions.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

13 juin 2008 10:08:40 :
Ajout de la dernière release
13 juin 2008 10:35:07 :
Correction source
13 juin 2008 11:00:16 :
Mise à jour des sources Zip pour inclure le code source
02 septembre 2008 11:23:58 :
Correction de bugs et ajouts de predicats

 Sources du même auteur

Source .NET (Dotnet) LANCER LES OPTIONS D'IMPRESSION D'UNE IMPRIMANTE
Source avec Zip Source avec une capture Source .NET (Dotnet) SQL2005SCRIPTEXTRACTOR (POUR SUBVERSION(SVN))
Source avec Zip Source .NET (Dotnet) JOUER AVEC VOS SHORTCUTS (AJOUT, SUPPRESSION, MODIFICATIONS)
Source .NET (Dotnet) CONFIGURATION XP FIREWALL

 Sources de la même categorie

Source .NET (Dotnet) ENTITY FRAMEWORK - AVOIR UN INCLUDE TYPÉ par jesusonline
Source avec Zip APPLICATION BASE DE DONNÉES par pretude
Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION DE CLASSES MÉTIERS À PARTIR D'UNE BASE DE DONNÉES par sebmafate
Source avec Zip Source avec une capture Source .NET (Dotnet) C# SQLCE DEMO par DanMor498
Source avec Zip EXPORTATION DE FICHIER CSV VERS UNE TABLE SQLSERVER par imothepe_33

 Sources en rapport avec celle ci

Source .NET (Dotnet) REFLECTION .NET par Yxion
Source avec Zip Source .NET (Dotnet) CONVERTIR UN OBJET EN DATATABLE ET VICE-VERSA par sebmafate
Source avec Zip Source .NET (Dotnet) UN PETIT DEMINEUR EN C# AVEC VISUAL STUDIO 2005 par Viden

Commentaires et avis

Commentaire de tmcuh le 16/06/2008 13:01:57 8/10

Ca me semble bien codé, l'idée est bonne, mais j'ai l'impression que tu réinvente la roue

Commentaire de zebobo5 le 16/06/2008 14:18:29

Salut TMCUH,

Peut-être que je la réinvente, je ne vois pas trop en quoi... De toutes façon, toutes les DAL se ressemblent plus ou moins...
Cette source est destiné surtout à voir la possibilité des générics, dans une couche d'accès aux données assez simple, en Framework 2.0, sans paramètrage (à part la ConnectionString).

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

arbre à fils multiples [ par Ro3090 ] Bonjour,Je voudrais créer un arbre qui ait plusieurs fils à partir d'une liste, sachant que je ne connais pas la taille de ma liste à l'avance.Pour ma application windows avec une couche DAL [ par fabian86 ] bonjour,Je dois réaliser un projet (application windows) qui permet de gérer un cabinet dentaire.prise de rendez vous, ajout modif et suppression de p Linq To Sql [ par 24 ans ] Salut tous le mondeJ ai un petit soucis qui est le suivant :Probleme de fusion de deux Table en une seul table linqvoici le code que j ai ecrit:Dal d1 Utilisation des couches (DAL,DAO,BBL,UI) dans un programme Visual Csharp 2008 [ par masterpiar ] salut à tous, je suis nouveau en visual csharp 2008 express, je viens de realiser une connection avec visual Csharp 2008 express et MySql comme databa ORM for compact framework [ par sourria ] salut tout le monde alors ma question c'est la suivante: je veux savoir es que il existe un ORM pour compact framework tel le NHIBERNATE ou ADO.NET [Entity Framework] Contextes distincts [ par gmi19oj19 ] Salut, Je m'auto-forme un peu sur Entity Framework (entre autres) pour des besoins professionnels et je me retrouve face à un problème que j'ai du ma


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,186 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales