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 :

Intérêt des dataset typés?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Par défaut Intérêt des dataset typés?
    Bonjour à tous,

    Je dois récupérer des infos ds un document XML, sachant que j'ai également l'XSD correspondant. L'utilisation que je dois faire de ces infos étant assez sensible, il faut que je m'assure de l'intégrité des données de l'XML, que je fasse un certain nombre de check et que "j'arrange" ces données pour une insertion en base.

    En réfléchissant à la façon de procéder, j'ai vu pas mal de choses sur les datasets typés, mais je n'arrive pas à comprendre l'intérêt de ces derniers, et à savoir si je peux m'en servir ou si ca reviendrait au même de passer par des datasets classiques.

    Auriez vs des conseils à me donner sur ce point SVP?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Un DataSet typé permet d'accéder aux données directement via des propriétés typées, plutôt que de passer par une chaine et de récupérer des données non typées (qu'il faudra caster pour les utiliser).

    Par exemple, avec un DataSet non typé, tu ferais quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach (DataRow row in myDataSet.Tables["Products"].Rows)
    {
        int id = (int)row["ProductId"];
        string name = (string)row["ProductName"];
        ...
     
        row["ProductName"] = 42; // compilation OK, erreur à l'exécution
    }
    Avec un DataSet typé, tu pourrais faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach (ProductsRow row in myDataSet.Products)
    {
        int id = row.ProductId;
        string name = row.ProductName;
        ...
     
        row.ProductName = 42; // erreur à la compilation
    }
    Donc en résumé, les principaux avantages sont :
    - moins de casts, donc code plus court et plus clair
    - vérification à la compilation : si tu n'affectes pas la bonne valeur à un champ, ça pètera à la compilation plutôt qu'à l'exécution

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par mondeinfo Voir le message
    mais je n'arrive pas à comprendre l'intérêt de ces derniers,
    Tomlev a expliqué comment les utiliser, mais, pour ma part, je trouve au contraire que c'est un concept bancal qui crée un couplage fort entre accès données et objets métiers.

    Je ne suis pas favorable du tout à leur utilisation.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Par défaut
    Merci tomlev pour ces explications.

    Il est vrai que ça me faciliterait les choses autant au niveau du nombre de lignes de code, qu'au niveau de l'intégrité des données. Mais effectivement comme le note Bluedeep, le couplage métier/Données me gène.

    En conclusion je comprends mieux leur fonctionnement mais je ne les utiliserai pas.

    Merci à vous deux

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Par défaut
    J'ouvre à nouveau la discussion pour revenir sur les datasets.

    En utilisant un dataset non typé, toutes les valeurs stockées ds le dataset sont des "string" (exemple de commande : int i = (int)toto.Tables["tata"].Rows[0][2] me génère une erreur).
    Or j'aimerais justement que ces valeurs(toto.Tables["tata"].Rows[0][2]) soient du même type que les types spécifiés dans l'XML qui charge le dataset.
    Ce qui me permettrait ds mon code de faire des tests pour savoir si j'avais les bons types ds l'xml.
    En effet si ds l' XML les types entrées ne st pas conformes aux types de l'XSD =>je dois rejetter l'XML.

    Auriez vous des idées svp?

    Je sais que c'est pas tres clair mais evidemment je peux répondre a toutes les interrogations.

    Merci d'avance.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    En utilisant un dataset non typé, toutes les valeurs stockées ds le dataset sont des "string"
    Non, absolument pas. Les valeurs sont du type indiqué pour la colonne (DataColumn.DataType). Le type de retour de l'indexeur est object, parce qu'on ne connait pas statiquement le type, d'où l'intérêt des datasets typés.

    Mais en tous cas, que le dataset soit typé ou non, si tu essaies de mettre une valeur de type int dans un colonne de type string (ou inversement), ça plantera

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 7
    Par défaut
    Bonjour,

    Merci pour ta réponse tomlev.

    En fait je me suis peut être mal exprimé
    En fait ce qui se passe c'est que ds mon xsd j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xs:attribute name="monattribut" type="xs:double" use="required">
    dans l'xml j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <monelement ... monattribut="10.0000" .../>
    Cette ligne est contenu dans un fichier xml que je récupère grace a un dataset
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DataSet mondatatset= new DataSet()
    mondatatset.ReadXml("monxml.xml");;
    Lorsque j'essaye de récupérer la valeur contenue dans monattribut par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double toto = (double)rr.Tables[4].Rows[0][2];
    J'ai une erreur de cast. Or je ne voudrais avoir cette erreur que si mon xml contient autre chose qu'un double.

    Une idée SVP?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Intérêt des DataSet
    Par jacklafrip dans le forum C#
    Réponses: 23
    Dernier message: 08/07/2011, 16h28
  2. Réponses: 6
    Dernier message: 23/11/2007, 12h18
  3. DataSet typé / Gestion des espaces sur clés
    Par sandre dans le forum Windows Forms
    Réponses: 8
    Dernier message: 17/09/2007, 10h07
  4. Réponses: 3
    Dernier message: 05/01/2007, 10h44
  5. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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