Aide en développement Asp.net/Csharp/SQL Server

Signaler
Messages postés
2
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
27 février 2012
-
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
Bonjour,

je suis actuellement en stage dans une entreprise de ferroviaire. Ma mission est de développer un outil sur le net pour qu'ils puissent enregistrer des données à partir d'un site simple vers une base de données.
Je suis débutant en développement, et pas du tout expérimenté en POO.

Quelqu'un peut-il m'aider simplement à lancer ma programmation afin de faire quelque chose de propre?

J'ai fait les classes et les héritages en Csharp correspondant aux tables de ma bdd en fonction des liaisons entre elles.

Cependant, plusieurs questions persistent...

1/Je n'arrive pas à débogger en local, comment y remédier?
2/Comment créer le mappages entre la classe et la bdd?
3/Pour vérifier ce que j'ai déjà codé, que dois-je retrouver dans mes classes (correspondantes aux tables)?

Je peux poster des informations supplémentaires pour tous ceux qui veulent bien me donner un coup de pouce.

PS: j'ai déjà chercher et parcouru sur le net des tonnes de tutos et des projets postés sur des sites. Il me manque simplement une brève explication, un court suivi et je continuerai tout seul.

Merci d'avance.

3 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

1) Parce que t'arrives à débugger en déployé ? ^^ Blague à part, regarde si Visual Studio ne compile pas en mode "Release". Si oui, bascule en mode "Debug" et tes points d'arrêt fonctionneront. Si non, j'ai pas d'idée sur l'origine du problème.

2) Le "mappage" est simplement, pour moi, le procédé qui va requêter ta BDD et créer des instances de tes "objets de mapping" avec les bonnes données. Perso j'ai par habitude de faire 2 couches :
- jeu de classes de mapping (classes représentant mes objets en BDD),
- jeu de classes d'accès aux données (encore du C# mais qui se charge de requêter la BDD)
C'est assez simple à maintenir et à faire évoluer. Cela permet également de faire des jeux de classes d'accès pour différents SGBD si on vient à en changer.

3) Pour une classe de mapping, encore et toujours pour moi, je transcris simplement tous les champs de mon objet en BDD en variables dans ma classe de mapping. A ceci j'adjoins les fonctions habituelles utiles telles que :
- Save() : enregistre la donnée de l'instance en BDD (qui appelle Insert() ou Update() de ma classe d'accès, selon le besoin),
- Delete() : supprime de la base de données (appelle une fonction Delete(), ou une fonction DeleteLogical() de ma classe d'accès),
- GetOne() : fonction d'accès à un enregistrement. Cette fonction peut être surchargée autant de fois que tu as de champ/groupe de champs de type UNIQUE.
- GetAll() : peut également être paramétrée, que l'on veuille tous les enregistrement, ou "tous les enregistrements qui suivent une contrainte".
Avec ces bases je lance n'importe quel projet métier. D'autres auront des méthodes différentes, à toi de voir.

Bon dev
Messages postés
2
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
27 février 2012

Salut,

1/ je sais que ca parait insensé mais je débug réellement en déployé! c'est à dire que je programme, puis je transfert le code sur le serveur et je fais mes essais en ligne... (tu vois à quel point je déprime !) tout ca car je n'arrive pas à effectuer de liaison entre ma bdd local et visual studio.
cela fait 1 mois et demi que je galère la dessus et on m'a remonté les bretelles quand on a vu mon code car ce n'était pas du tout professionnel.

Voici la structure de toutes les procédures de mon codes :
/**************************/
void proc(){
listbox1.Items.Clear();
SqlConnection connection = new SqlConnection();
connection.ConnectionString = "Data Source=XXXXX,1433;Initial Catalog=XXXXXX;User Id=XXXXX;Password=XXXXXX;";
connection.Open();
SqlCommand command = connection.CreateCommand();
command.CommandText = "select * from TABLE1";
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
ListItem item = new ListItem(reader.GetValue(1).ToString(), reader.GetValue(0).ToString());// 0 pour avoir l'id, 1 pour avoir le nom de
// l'élément a afficher
listbox1.Items.Add(item);
}
connection.Close();
}
/**************************/


2/
-jeu de classes de mapping (classes représentant mes objets en BDD),

je pense avoir compris tes classes de mapping. 2 petites questions :
-je dois aussi représenter l'id de l'élément dans les attributs de classe?
- y a t il un héritage entre les classes tout comme les tables sont liées entre elles?

- jeu de classes d'accès aux données (encore du C# mais qui se charge de requêter la BDD)

Peux-tu me donner un exemple schématique stp?

je souhaite avoir un projet métier à partir du quel je peux m'inspirer. Que dois-je chercher dans google?
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Re,

1) je pense que tu parles de "tester" et non "debugger", qui signifie faire dérouler le programme pas-à-pas en scrutant le code en même temps qu'il est exécuté. Perso je ne connais aucun moyen de faire ça sur une appli déployé. Pour ce qui est du debug en local, tu dois simplement avoir un souci d'accès à ta BDD (restriction du serveur ?).
En mode "Debug", pose un point d'arrêt avant l'ouverture de ta connexion (touche F9 sur la ligne) puis lance le programme en debug (touche F5). Pour avancer de ligne en ligne il faut appuyer sur F10. Regarde où ça coince dans ton code.

Pour ton bout de code y'a pas trop de soucis. Simplement :
- n'oublie de fermer ton DataReader,
- gère les exceptions qui pourraient être levées,
- pour peaufiner, utilise la commande using autour de ta création du DataReader.

2) Perso je représente toujours l'ID unique de mes tuples dans mes instances. Cet ID me servira à requêter avec certitude ce tuple en particulier, notamment pour leur suppression. Dans le mécanisme que je mets habituellement en place il me permet également de savoir s'il s'agit d'un nouvel enregistrement (ID=0) ou d'un ancien (ID=xxx), ainsi je sais s'il faut faire un INSERT ou un UPDATE.

Pour l'héritage ça peut être un peu complexe sachant que du côté du SGBD c'est une simple vue de l'esprit. Pour faire simple chaque champ doit être représenté, y compris ceux correspondant à des clés étrangères. Prenons un exemple simple de liaison BDD :
- table REGIONS { ID, NOM }
- table DEPARTEMENTS { ID, IDREGION, NOM }
Ta classe C# clsDepartement aura donc 3 variables membres : _id, _idRegion et _nom

Tu peux également, côté classe de mapping, allé un peu plus loin et adjoindre dans ta classe clsRegion une collection des instances clsDepartement qui lui sont associées. A toi de voir comment architecturer tout ça selon tes besoins de programmation.

Enfin, pour ta recherche google j'ai pas bien d'idée. Essaie des mixes avec "projet informatique", "application métier", "tutoriel" ...

Bon courage