IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[DAL] Bonne manière


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut [DAL] Bonne manière
    Bonjour,

    Trouvant le travaille à chaque fois effectué assez fastidieux, je me demandais si je n’avais pas opté pour la manière la plus chiante. Ce qui me poussent à me demander comment les personnes les plus expérimenté procède ou contourne cette problématique.

    Je m'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    cmd.CommandText = "INSERT INTO client VALUES(@Id_client, @Code_client, @ID_Lieu, @ID_Entite, @Id_Projet, @Code_Commercial_Modif, @Description_Client, @Reference_Compte, @Commentaire, @Date_Entree, @Duree_Previsionnelle_Compte, @Date_Creation, @Date_Derniere_Modif, @Type_Client";
                    cmd.Parameters.AddWithValue("@Id_Demande", Client.ReferenceDemande);
                    cmd.Parameters.AddWithValue("@Code_Client", Client.Code_Client);
                    cmd.Parameters.AddWithValue("@ID_Lieu", Client.ID_Lieu);
                    cmd.Parameters.AddWithValue("@ID_Entite", Client.ID_Entite);
                    cmd.Parameters.AddWithValue("@Id_Projet", Client.Id_Projet);
                    cmd.Parameters.AddWithValue("@Code_Commercial_Modif", Client.Code_Commercial_Modif);
                    cmd.Parameters.AddWithValue("@Description_Client", Description_Client);
                    cmd.Parameters.AddWithValue("@Reference_Compte", Reference_Compte);
                    cmd.Parameters.AddWithValue("@Commentaire", Commentaire);
                    cmd.Parameters.AddWithValue("@Date_Entree_Souhaitee", Date_Entree_Souhaitee);
                    cmd.Parameters.AddWithValue("@Duree_Previsionnelle_Mission", Duree_Previsionnelle_Mission);
                    cmd.Parameters.AddWithValue("@Date_Creation", Date_Creation);
                    cmd.Parameters.AddWithValue("@Date_Derniere_Modif", Date_Derniere_Modif);
                    cmd.Parameters.AddWithValue("@Type_Client", Type_Client);
                    cmd.ExecuteNonQuery();
    Et ce n’est pas fini puisque d'autre ligne dans d'autre table sont insérer lors de l'insertion d'un nouveau client ...

    De même pour les constructeurs, est ce qu'une solution de génération de code pour un petit projet est adéquate ? Comment faites vous pour faciliter cette tâche qui deviens parfois agaçante ?
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360
    Par défaut
    tu pourrais utiliser un dataset typé, avec VS tu as un "assistant" qui t'aide a crééer ton dataset en fonction des tables de ta BD et tu peux utiliser directement des procédures stockées qui peuvent être générées automatiquement. Par contre il faut que ta BD soit en SQL server..

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Merci bcp pour ta réponse, j'utilise effectivement une BD Sql Server.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 360

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    perso je viens d'apprendre une nouvel technique en stage

    ton logiciel ne gérè pas le serveur directement, il gere des objets perso.

    schematiquement sa fait


    1) MonApplication.Vues (les feuilles, controles, traitement qui ne touche pas au donnèes)
    2) MonApplication.Metier (des classes representant tes donnèes)
    donc la tu peut imaginer une classe "Client" avec pour infos nom et prenom puis une classe "CatalogueClient" qui contient une liste de client(List<Client>) et des fonctions Ajouter, Modifier, Supprimer qui ont en parametre par exemple un ArrayList avec les infos
    3) Ton serveur de BDD

    ton application tape directement dans tes objets et après et bien dans ajouter, modifier, supprimer tu effectue l'action a la fois sur l'objet et le serveur

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    Citation Envoyé par TheBlackReverand Voir le message
    perso je viens d'apprendre une nouvel technique en stage

    ton logiciel ne gérè pas le serveur directement, il gere des objets perso.

    schematiquement sa fait


    1) MonApplication.Vues (les feuilles, controles, traitement qui ne touche pas au donnèes)
    2) MonApplication.Metier (des classes representant tes donnèes)
    donc la tu peut imaginer une classe "Client" avec pour infos nom et prenom puis une classe "CatalogueClient" qui contient une liste de client(List<Client>) et des fonctions Ajouter, Modifier, Supprimer qui ont en parametre par exemple un ArrayList avec les infos
    3) Ton serveur de BDD

    ton application tape directement dans tes objets et après et bien dans ajouter, modifier, supprimer tu effectue l'action a la fois sur l'objet et le serveur
    l'ORM

    très avantageux à utiliser avec des objets base simples. Après, l'abstraction peut devenir très dure à faire.

    bltoolkit est simple à utiliser. après, y a Nhibernate (moins marrant). et le plus mieux et qui est tout neuf: LINQ

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Effectivement, j'utilise une version modifiée de DataTierGenerator (j'y ai intégré des améliorations .NET 2.0). Ce n'est pas de l'ORM, mais ça permet de ne pas écrire toute la plomberie.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Effectivement, j'utilise une version modifiée de DataTierGenerator (j'y ai intégré des améliorations .NET 2.0). Ce n'est pas de l'ORM, mais ça permet de ne pas écrire toute la plomberie.
    Est ce que l'utilisation de l'outil dans l'état initial pose problème. Ou est ce que c'étais pour résoudre un problème particulier à ta propre utilisation ? Par ailleurs, la prise en main de cet outil est elle immédiate ou y a-t-il un temps d'apprentissage non négligeable ?

    D'avance merci
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  9. #9
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Les datasets peuvent dépanner, mais personnellement je trouve que ce sont vraiment des objets de transferts de données.
    Ils ne sont pas facilement réutilisables car souvent trop spécifiques à une UI particulière et il est pas évident d'y implémenter de la logique métier.

    En gros, je vois que c'est souvent utilisé comme une façon de faire un gros bridge bien trash à la quick and dirty entre une base de données et une UI.
    Les requêtes que vs génère pour alimenter les datasets et persister les changements sont de vulgaires string qui ne sont pas vérifiée a la compilation.

    En plus sitot qu'on veut alimenter son dataset avec des requêtes différentes (clause TOP, nombre de critères variables dans clause WHERE, clause de tri différente ) ça devient d'une lourdeur qui frise la science-fiction, ou sinon il faut te contenter de faire le filtrage et le tri coté client, ce qui serait une grave erreur si les volumes de données deviennent conséquents.

    En fait les datasets je trouve cela OK pour le remoting ou les webservices, mais pour le reste, je suis vraiment plus du coté business objects et entités.

Discussions similaires

  1. La bonne manière d'inclure des pages
    Par gondek dans le forum JSF
    Réponses: 6
    Dernier message: 22/07/2008, 20h49
  2. Réponses: 5
    Dernier message: 29/06/2008, 15h46
  3. Bonnes manières de rédiger du code ?
    Par [Hugo] dans le forum Débuter
    Réponses: 55
    Dernier message: 04/11/2006, 18h48
  4. Listeners: bonne manière de programmer?
    Par ®om dans le forum Langage
    Réponses: 8
    Dernier message: 26/07/2006, 22h42
  5. 'Bonnes manières' et php
    Par tom_bxl dans le forum Langage
    Réponses: 8
    Dernier message: 25/07/2006, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo