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 :

Entity Framework - Génération d'une table portée avec clé composée unique


Sujet :

Entity Framework

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Entity Framework - Génération d'une table portée avec clé composée unique
    Bonjour à tous,

    Je dispose de 3 models pour gérer mes adresses pour mes clients :

    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
    public class Client 
    {
    public int Key { get; set; }
    public string Name { get; set; }
    public virtual List<Adresse> Adresses { get; set; }
    public virtual List<TypeAdresse> TypeAdresses { get; set; }
    }
    public class TypeAdresse
    {
    public int Key { get; set; }
    public string Libelle { get; set; }
    public List<Client> Clients { get; set; }
    public List<Adresse> Adresses { get; set; }
    }
    public class Adresse
    {
    public int Key { get; set; }
    public string Detail { get; set; }
    public virtual Client Client { get; set; }
    public virtual TypeAdresse TypeAdresse { get; set; }
    }
    Règle de gestion une clé composé unique doit être crée entre Client et TypeAdresse.
    En sortie de mes 3 models, j’aimerai obtenir une table portée composée de 3 colonnes pour chaque modèls de départ.

    Exemple de données :
    Client C1
    Type T1 et T2 et T3
    Adresse A1 et A2

    Résultat possible attendu :ClientId TypeId AdresseId
    C1 T1 A1
    C1 T2 A2
    C1 T3 A2
    C1 T2 A1 <-- Impossible

    Le couple C1 et T2 ne peut exister qu’une seule fois.

    Comment faire pour obtenir ce résultat en code first en fluent API (cf. Pièce jointe) ?

    Merci d’avance

    SVT
    Images attachées Images attachées  

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2013
    Messages : 76
    Points : 143
    Points
    143
    Par défaut
    Pour obtenir ce que tu veux, tu aurais besoin d'une entité en plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class ClientTypeAdresseAdresses
    {
        public int ClientId{get;set;}
        public int TypeAdresseId{get;set;}
        public int AdresseId{get;set;}
        public virtual Client Client{get;set;}                        //Propriété de navigation optionnelle
        public virtual TypeAdresse TypeAdresse{get;set;}     //Propriété de navigation optionnelle
        public virtual Adresse Adresse{get;set;}
    }
    Et avec l'API fluent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modelBuilder.Entity<ClientTypeAdresseAdresses>().HasKey(A => new { A.ClientId, A.TypeAdresseId});
    il ne faudra pas oublier de mapper les clé étrangère avec le nom des propriétés correspondantes.

    Il faudra aussi modifier tes propriétés de navigations qui ne fonctionneront plus tel quelle.

    Je ne comprends pas l'utilité de cette table supplémentaire. Personnellement, j'aurais mis ClientId et TypeAdresseId en tant qu'identifiant d'Adresse.

Discussions similaires

  1. [ADO.NET Entity Framework] génération des tables
    Par anthyme dans le forum Accès aux données
    Réponses: 3
    Dernier message: 22/02/2008, 17h44
  2. Es-ce possible de créer une table MySQL avec MS Excel
    Par pierrot10 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 16/10/2005, 06h30
  3. UPDATER le champ d'une table 1 avec le champ d'une table 2
    Par alain.dissoir dans le forum Oracle
    Réponses: 2
    Dernier message: 08/06/2005, 13h07
  4. cellule d'une table visible avec focus dans div scrollable
    Par echecetmat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/03/2005, 10h57

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