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 :

Précision sur auto incrément et clé étrangère


Sujet :

Entity Framework

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 40
    Points
    40
    Par défaut Précision sur auto incrément et clé étrangère
    Bonjour,

    Je souhaitais avoir quelques précisions sur deux points : auto incrément et clés étrangères.

    J'ai une table formation(idFormation,...) et une table session(idformation,dte,fk_formation)

    A la génération du modèle j'ai un attribut fk_formation dans la classe session.

    J'ai crée la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public partial class session
        {
            public static session Createsessionmoi(global::System.DateTime dte, formation uneFormation)
            {
                session session = new session();
                session.idsession = 1;
                session.dte = dte;
                session.fk_formation = uneFormation.idformation;
                return session;
            }
        }
    Pour l'auto incrément, j initialise l'id dans ma méthode, et pour valoriser le fk_formation je passe en paramètre un objet formation ( ce qui est quand même plus logique en objet).

    Voilà le tout marche mais avez vous une meilleure façon de gérer cela ?

    Merci à tous

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sebpern Voir le message
    Pour l'auto incrément, j initialise l'id dans ma méthode, et pour valoriser le fk_formation je passe en paramètre un objet formation ( ce qui est quand même plus logique en objet).
    Voilà le tout marche mais avez vous une meilleure façon de gérer cela ?
    Le premier point à vraiment respecter c'est de laisser le moteur de base de données gérer les incréments. SQL Server et Oracle gère bien cela. Il suffit d'aller modifier le schéma de table et de configurer le champ concerné comme étant un champ auto-incrémenté.
    Le deuxième point pas vraiment pertinent : vu que t'as besoin uniquement de l'Id de la formation alors autant passer uniquement l'id en paramètre et pas tout l'objet.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 40
    Points
    40
    Par défaut propriété fk_formation vraiment utile ?
    Merci,

    J'ai bien un auto incrément dans ma base de données je voulais un constructeur qui ne prenait pas en paramètre une valeur pour cette id.

    Après pour la clé étrangère, je me disais que vu que l'on a les propriétés de navigations, cet attribut fk_formation dans la classe session me semble inutile ne peut on pas le mapper directement dans le modèle ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sebpern Voir le message
    J'ai bien un auto incrément dans ma base de données je voulais un constructeur qui ne prenait pas en paramètre une valeur pour cette id.
    Je n'ai pas vraiment compris mais de toute façon le fait que tu assignes une valeur à la clef ou pas, sa valeur sera générée en base s'il s'agit d'une nouvelle ligne donc autant ne pas renseigner de valeur pour ne pas induire en erreur les futurs développeurs qui reprendront ton travail.

    Citation Envoyé par sebpern Voir le message
    Après pour la clé étrangère, je me disais que vu que l'on a les propriétés de navigations, cet attribut fk_formation dans la classe session me semble inutile ne peut on pas le mapper directement dans le modèle ?
    Les propriétés de navigation sont utiles dans le cas où tu ne travaillerai pas avec la version 4.0 ou supérieure d'EF. Avec la version 4.0 et supérieure, EF génère en plus de la propriété de navigation, une propriété scalaire pour chaque clef étrangère. Cela est utile parce que tu n'as plus besoin de charger une entité entière pour l'assigner à la propriété de navigation mais juste besoin utiliser la propriété scalaire à la place.

    Que tu utilises la propriété scalaire ou la propriété de navigation, EF saura comment insérer ou mettre à jour le champ correspondant à la clef étrangère de la table dans ta base de données.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 61
    Points : 40
    Points
    40
    Par défaut merci
    pour la clé primaire : oui c'est pour cela que je voulais un constructeur qui ne prend pas d'idsession en paramètre.


    Merci de vos explications.

    Surement à bientôt pour d'autres questions ^^

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

Discussions similaires

  1. auto-incrément Mysql sur Access
    Par maxireus dans le forum Access
    Réponses: 8
    Dernier message: 14/03/2008, 00h26
  2. Réponses: 11
    Dernier message: 23/11/2007, 09h38
  3. auto-incrémentation sur une primary key avec sql server
    Par pops4 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/05/2007, 14h24
  4. auto-incrément Mysql sur Access
    Par maxireus dans le forum Access
    Réponses: 4
    Dernier message: 07/03/2006, 00h35
  5. auto-incrément Mysql sur Access
    Par maxireus dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 06/03/2006, 21h20

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