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

NHibernate Discussion :

[nHibernate] Mapper des colonnnes vers un sous-objet de la table de base


Sujet :

NHibernate

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 55
    Points : 49
    Points
    49
    Par défaut [nHibernate] Mapper des colonnnes vers un sous-objet de la table de base
    Bonjour


    J'ai une base contenant une table assez mal construite :
    du genre :

    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
    ListeInfos 
    (
         id                   varchar2(40),
         CodeInfo1       number,
         LibelleInfo1      varchar2(40),
         ValeurInfo1      float, 
     
         CodeInfo2       number,
         LibelleInfo2      varchar2(40),
         ValeurInfo2      float, 
     
         CodeInfo3       number,
         LibelleInfo3      varchar2(40),
         ValeurInfo3      float
    )
    J'ai 16 x le groupe Info contenant Code, Libelle et Valeur ... et cela devrait encore augmenter.

    Je souhaiterais mapper vers un objet de la class ListInfo ci-dessous avec un objet de class ListInfoData pour chaque Info.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class ListInfoData
    {
         private int   _code;
         private float _valeur;
         private string _libelle;
     
     ....
    }
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class ListInfo
    {
        private int _id;
        private ListInfoData _info1;
        private ListInfoData _info2;
        private ListInfoData _info3;
     
    ...
    }

    Je sais bien qu'une liste d'info (private IList<ListInfoData> _infos) serait encore mieux mais je suis limité dans mes modif par l'Historique !!! (ne pas toucher aux tables)
    Ce sera sans doute (j'espère) pour une évolution ultérieure.

    Ma question: comment mapper les colonnes

    CodeInfo1 = > _info1.Code
    LibelleInfo1 => _info1.Libelle
    ValeurInfo1 => _info1.Valeur

    CodeInfo2 = > _info2.Code
    LibelleInfo2 => _info2.Libelle
    ValeurInfo2 => _info2.Valeur

    etc ...

    merci de votre aide

  2. #2
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Novembre 2009
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2009
    Messages : 61
    Points : 59
    Points
    59
    Par défaut
    Bonjour m3z91

    Si tu utilises Fluent NHIbernate, regarde de ce côté :
    http://wiki.fluentnhibernate.org/Flu...ing#Components

    Sinon avec NHibernate:
    http://knol.google.com/k/fabio-maulo...e_per_subclass

  3. #3
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par dublow Voir le message
    Bonjour m3z91

    Si tu utilises Fluent NHIbernate, regarde de ce côté :
    http://wiki.fluentnhibernate.org/Flu...ing#Components

    Sinon avec NHibernate:
    http://knol.google.com/k/fabio-maulo...e_per_subclass
    Je ne vois pas trop en quoi ça répond à la question... les liens que tu donnes ne couvrent pas le cas particulier présenté par le PO

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Effectivement ça ne réponds pas au problème.
    Mais c'est sympa d'avoir essayé.

    J'ai fini par trouvé la solution: le mapping "component" .

    Voici donc, le fichier de mapping qui convient :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                       namespace="xxxxx.Entities"
                       assembly="xxxxx">
     
     <!-- Identity mapping -->
        <id name="Id" type="System.Int32" unsaved-value="null">
          <column name="Id" />      
        </id>
     
        <!-- component mapping -->
        <component name="Info1" class="xxxxx.Entities.ListInfoData " >
          <property name="Code"  column="CodeInfo1"/>
          <property name="Valeur"  column="ValeurInfo1"/>
          <property name="Libelle"  column="LibelleInfo1/>
        </component>
     
        <!-- component mapping -->
        <component name="Info2" class="xxxxx.Entities.ListInfoData " >
          <property name="Code"  column="CodeInfo2"/>
          <property name="Valeur"  column="ValeurInfo2"/>
          <property name="Libelle"  column="LibelleInfo2"/>
        </component>
     
        <!-- component mapping -->
        <component name="Info2" class="xxxxx.Entities.ListInfoData " >
          <property name="Code"  column="CodeInfo3"/>
          <property name="Valeur"  column="ValeurInfo3"/>
          <property name="Libelle"  column="LibelleInfo3"/>
        </component>
     
      </class>
    </hibernate-mapping>
    Tout simplement. Cela pourra peut-être aider quelqu'un

    @+

  5. #5
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    ah ok, tu le fais quand-même manuellement... je pensais que tu voulais que ça aille automatiquement chercher les colonnes 1, 2, 3... pour faire une liste de ListInfoData

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 55
    Points : 49
    Points
    49
    Par défaut
    Oui, évidement c'eut été l'idéal mais je n'ai pas trouvé.
    C'est une solution sans doute pas la plus élégante.
    Dans l'absolue, je souhaites décorréler le modèle physique du modèle logique afin de pouvoir repenser la base.
    Je suis sur une solution temporaire et j'essaie de limiter le temps de dev.
    Reste que, pour la culture, je suis quand même intéressé par la solution que tu mentionnes.

    @+

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/08/2014, 08h41
  2. [Excel] De xls vers csv sans objet COM (php4 sous linux)
    Par AntaresJon dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 26/02/2009, 17h13
  3. Réponses: 8
    Dernier message: 12/07/2008, 12h29
  4. Réponses: 1
    Dernier message: 03/01/2008, 17h20

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