|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
GENERIC DAL
Information sur la source
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.
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
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
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
|
|