cs_hasen
Messages postés246Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention29 décembre 2008
-
12 nov. 2008 à 17:35
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 2017
-
21 nov. 2008 à 09:39
Amis du soir, bonsoir!
Je viens vous demander vos lumieres, car je suis devant un probleme que je n'arrive pas à résoudre. Il me faudrait quelque explications concernant les accesseurs. Je dois développer une application qui utilise une BDD MySQL et pour manipuler ces données, je dois développer une classe pour chaque table et créer les accesseurs pour chaque attribut de ma table.
Ma question est : comment fonctionne le liens entre ma table de ma BDD et ma classe (et comment faire ce lien!).
Mais egalement : qu'elle est la différence entre cela et le mapping (il y en a une, mon chef de projet me l'a certifié et c'est un homme de confiance!).
Merci d'avance pour vos lumières, j'en ai grand besoins!
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 15 nov. 2008 à 22:33
Bonsoir,
Le mapping est en effet l'opération qui consiste à transformer des données relationelles en objets. Les bases de données objets n'étant pas nombreuses, et pas toujours adaptées aux post-traitements.
En .net le plus simple est d'utiliser un Dataset, l'environement du Visual studio te permet de faire ça simplement. Fais des recherches sur Dataset et tu trouveras une mutitude d'information.
Cela dit, si les Datasets permettent de faire le mapping facilement ils sont parfois assez lourds, notamement gourmands en mémoire.
si par exemple tu ne veux que lire une base de données les Datasets ne sont pas particulierement performants, tu peux faire le mapping à la main. J'ai dèjà du faire ce genre de chose lors d'un develppement sur du materiel embarqué n'ayant pas beaucoup de puissance.
Voici un exemple leger, sans prétentions, partant de la base Nothwind de Sql server (une table Customer et une table Command) .
Remarque que dans cet exmple les accesseurs sont remplacés pas des clauses readonly, toujours par soucis de gain en mémoire.
if (sqlCon.State==ConnectionState.Open)
sqlCon.Close();
}
//une classe client
public
class Customer
{
public
readonly
string Id;
public
readonly
string Nom;
public
readonly Command[] Commands;
public Customer(SqlDataReader reader)
{
Id = reader.GetString(reader.GetOrdinal("CustomerID"));
Nom = reader.GetString(reader.GetOrdinal("ContactName"));
Commands = Command.GetForOneCustomer(
this);
}
public
static Customer[] GetAll()
{
string query=@"SELECT Customers.CustomerID, Customers.ContactName
FROM Customers ";
SqlCommand command=
new SqlCommand(query,sqlCon);
SqlDataReader reader = command.ExecuteReader();
ArrayList list=
new ArrayList();
while (reader.Read())
list.Add(
new Customer(reader));
reader.Close();
cs_hasen
Messages postés246Date d'inscriptionmercredi 14 avril 2004StatutMembreDernière intervention29 décembre 20082 17 nov. 2008 à 16:24
Ok, un grand merci, c'est une très bonne base pour commencer à tester!
Juste un souci, mon projet va traiter de grosses bases de données (il est question qu'une des tables fasse plus de 2 000 000 d'occurances) et tu me dis que les Dataset sont un peu lent, nottement pour la lecture. Quel autre structure me conseillerais-tu d'utiliser?
cs_Robert33
Messages postés834Date d'inscriptionsamedi 15 novembre 2008StatutMembreDernière intervention14 janvier 201733 21 nov. 2008 à 09:39
Bonjour,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
L’exemple que je t’ai donné avait seulement pour but de montrer comment un Mapping entre des données relationelles et un modèle objet pouvait être réalisé (ce qui était ta question de base).
Ce type de mapping manuel n’est recommandé que dans des cas ou l’utilisation d’un dataset n’est pas requise (environnement mobile, petite base de données en lecture seule, cas d’école …)
Si l’utilisation des DataSets n’est pas adaptée dans certains cas typiques je suis certain qu’ils sont fortement recommandés pour des bases de données aussi importantes, les DataSets étant optimisés pour ces cas de figure.
Pour créer tom mapping, si tu utilises Visual Studio c’est très simple, il te suffit d’ouvrir l’explorateur de serveurs, de créer une connexion à ta base et de glisser les tables que tu souhaites utiliser dans ta forme, l’environnement va créer les éléments nécessaires (connection, command, adapter, dataset).