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

Entity Framework Discussion :

Comment mapper les colonnes de plusieurs tables à une même entité


Sujet :

Entity Framework

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut Comment mapper les colonnes de plusieurs tables à une même entité
    Bonjour,

    je dois réaliser une application de consultation de données sur une base de données SQL Server déjà existante.
    Cette base de données est constituée d'un ensemble de tables "type de produit". Les colonnes des tables décrivent les caractéristiques de chaque "type de produit". Elles diffèrent selon le "type de produit".
    Côté modèle objet, j'aimerais réaliser une classe "Type de Produit" définie comme suit:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class TypeProduit
    {
       public string NomTypeProduit {get; set;}
       public IEnumerable<Caractéristique> ListeCaracteristique {get; set;} 
    }

    avec la classe Caractéristique définit comme suit:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Caracteristique
    {
       public string NomCarac {get; set;}
     
       public object Value {get; set; }
    }

    La question est donc, est-il possible de mapper avec EF l'entité TypeProduit à plusieurs tables et chacune des colonnes à l'entité Caracteristique, NomCarac correspondrait au nom de la colonne de la table et Value la valeur ?

    Comment puis-je faire ?

    Merci d'avance,
    Zoax

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il y a un truc que je comprends pas : tu parles de plusieurs table TypeProduit. C'est quand même bizarre qu'on ait plusieurs tables qui jouent le même rôle non ?

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    je suis assez d'accord. La base de données est le modèle de présentation d'un système décisionnel. Il n'est pas normalisé. Je suis obligé de faire avec.
    De ce fait, il y a une table par type de produit, chaque type de produit ayant des caractéristiques différentes.

    Zoax

  4. #4
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    Avec de l'héritage "table per concrete class" tu peux mapper chacun de ces tables en sous type du type "TypeProduit"

    Ensuite tu peux faire des requetes sur le type "TypeProduit" qui va agreger les tables.

    Ca va marcher sauf que :
    - Il va falloir écrire l'edmx à la main car si EF gère ce mode le designer, lui, ne le gère pas
    - Attention aux perfs

  5. #5
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    Une application tapant sur une base OLAP avec ENTITIES? bon ben soit...

    Passez par une vue (VIEW) SQL regroupant vos différentes tables 'Type de produit' (avec UNION).


    Les vues sont là pour masquer la complexité d'un modèle (en l’occurrence ici un modèle non normalisé de type OLAP).
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  6. #6
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    Une application tapant sur une base OLAP avec ENTITIES? bon ben soit ...
    J'avais pensé à Entity Framework mais ce n'est pas un choix arrêté.
    Que me suggéreriez vous ?

    Merci d'avance,
    Zoax

  7. #7
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    En général une base OLAP est faite pour proposer du reporting via reporting services par exemple? c'était juste une remarque
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  8. #8
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    merci pour vos réponses.

    Citation Envoyé par iberserk
    En général une base OLAP est faite pour proposer du reporting via reporting services par exemple? c'était juste une remarque
    Oui effectivement. Je devrais peut-être reconsidéré le choix de récupérer les données dans le "Modèle De Présentation" pour les récupérer plutôt dans le modèle normalisé.

    Je reviens sur la réponse de anthyme.
    Citation Envoyé par anthyme
    Avec de l'héritage "table per concrete class" tu peux mapper chacun de ces tables en sous type du type "TypeProduit"
    D'après ta réponse, je comprends qu'il n'est pas possible de faire ce que je souhaite faire.
    Tu me conseilles plutôt de faire une sous-classe par "Type de produit" dérivant d'une classe mère "TypeProduit" ?

    Merci d'avance,
    Zoax

Discussions similaires

  1. Comment aligner les colonnes de 2 tables
    Par mozer8888 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/11/2011, 19h54
  2. Comment éviter les jointure sur plusieurs tables
    Par xavier81 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2011, 15h12
  3. Réponses: 2
    Dernier message: 05/07/2010, 23h45
  4. comment changer le OWNER de plusieurs table en même temps ?
    Par Ekimasu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/05/2008, 17h34
  5. Réponses: 1
    Dernier message: 14/05/2007, 15h46

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