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 :

Identity et EF


Sujet :

Entity Framework

  1. #1
    Membre régulier
    Étudiant
    Inscrit en
    Février 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 202
    Points : 97
    Points
    97
    Par défaut Identity et EF
    Bonjour,

    J'ai trois tables :

    Sondage / Question / Reponse

    Pour chaque table il y a un attribut Id en tant qu'identité.

    Le problème c'est que je n'arrive pas pas a ajouter un sondage avec ses questions/reponses via l'EF à cause des ID automatiquement générés...

    Dois d'abord ajouter un sondage.
    Le recuperer via un select, prendre son ID
    Creer une questions avec l'id du sondage qui fait ref.
    Puis idem pour reponse avec l'id de question ?

    Merci de votre aide,
    S

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Points : 174
    Points
    174
    Par défaut
    Pourrait tu réexpliquer ton pb?Les id générés automatiquement ne devrais pas être un pb il faut bien que chaques éléments de ta table est une clé unique . Tu peux adjoindre d'autres id, id_sondage,etc pour relier tes éléments entre eux.

  3. #3
    Membre régulier
    Étudiant
    Inscrit en
    Février 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 202
    Points : 97
    Points
    97
    Par défaut
    Cela doit pouvoir t'aider à comprendre.

    Code SQL : 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
    34
    35
    36
    37
    38
    39
    40
    41
     
    CREATE TABLE Utilisateur(
    	Id INT IDENTITY(1,1) NOT NULL,
    	Nom VARCHAR(50) NOT NULL,
    	Prenom VARCHAR(50) NOT NULL,
    	Email VARCHAR(50) NOT NULL,
    	Password VARCHAR(50) NOT NULL,
    	CONSTRAINT PK_Utilisateur Primary Key(Id),
    	CONSTRAINT UN_Utilisateur Unique(Email)
    );
     
    CREATE TABLE Sondage(
    	Id INT IDENTITY(1,1) NOT NULL,
    	Nom VARCHAR(50) NOT NULL,
    	Date_ouverture DATETIME NOT NULL,
    	Date_fermeture DATETIME NOT NULL,
    	Nb_participants INT NOT NULL DEFAULT 0,
    	Utilisateur_Id INT NOT NULL,
    	CONSTRAINT PK_Sondage PRIMARY KEY(Id),
    	CONSTRAINT FK_Sondage FOREIGN KEY(Utilisateur_Id) REFERENCES Utilisateur(Id),
    	CONSTRAINT UN_Sondage UNIQUE(Nom)
    );
     
     
    CREATE TABLE Question(
    	Id INT IDENTITY(1,1) NOT NULL,
    	Phrase VARCHAR(250) NOT NULL,
    	Sondage_Id INT NOT NULL,
    	CONSTRAINT PK_Question PRIMARY KEY(Id),
    	CONSTRAINT FK_Question FOREIGN KEY(Sondage_Id) REFERENCES Sondage(Id)
    );
     
     
    CREATE TABLE Reponse(
    	Id INT IDENTITY(1,1) NOT NULL,
    	Phrase VARCHAR(250) NOT NULL,
    	Question_Id INT NOT NULL,
    	Nb_Vote INT NOT NULL DEFAULT 0,
    	CONSTRAINT PK_Reponse PRIMARY KEY(Id),
    	CONSTRAINT FK_Reponse FOREIGN KEY(Question_Id) REFERENCES Question(Id)
    );

    Puis directement créer un sondage avec ses questions et réponses ?
    Ou dois je préalablement créer le sondage pour avoir son id, ensuite creer des questions pour avoir l'id des questions et l'associer au sondage et enfin creer mes reponses associées aux questions.

    Merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Points : 174
    Points
    174
    Par défaut
    Tu peux faire dans l'odre que tu veux: si tu fais sondage puis question puis réponse c'est assez simple de remplir les id. Mais si tu changes l'ordre rien ne t'empêche de modifier les clés etrangères, qui ne sont pas auto-incrémentées elles,par la suite(pour associer des questions à un sondage par exemple).

  5. #5
    Membre régulier
    Étudiant
    Inscrit en
    Février 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 202
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par davjan Voir le message
    Tu peux faire dans l'odre que tu veux: si tu fais sondage puis question puis réponse c'est assez simple de remplir les id. Mais si tu changes l'ordre rien ne t'empêche de modifier les clés etrangères, qui ne sont pas auto-incrémentées elles,par la suite(pour associer des questions à un sondage par exemple).
    Le hic cest justement que mes ID sont auto incrémentés cest pour cela que j'ai un problème pour tout ajouter d'un coup

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code c# : 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
     
    Reponse reponse1 = new Reponse();
    Reponse reponse2 = new Reponse();
    Reponse reponse3 = new Reponse();
    Reponse reponse4 = new Reponse();
     
    Question question2 = new Question();
    question1.Reponses.Add(reponse1);
    question1.Reponses.Add(reponse2);
     
    Question question2 = new Question();
    question2.Reponses.Add(reponse3);
    question2.Reponses.Add(reponse4);
     
    Sondage sondage = new Sondage();
    sondage.Questions.Add(question1);
    sondage.Questions.Add(question2);
     
    context.saveChanges();

    EF saura créer les clefs auto-incrémentées et aussi renseigner les valeurs des clefs étrangères sans problèmes lors de la sauvegarde dans la base de données.

    Si ça ne répond pas à ta question, faudra nous fournir une explication plus précise de ton problème.

  7. #7
    Membre régulier
    Étudiant
    Inscrit en
    Février 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 202
    Points : 97
    Points
    97
    Par défaut
    Voilà un exemple concret de mon problème :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Utilisateur currentUser = Entities.Instance.DataContext.Utilisateurs.FirstOrDefault(e => e.Email == Email);
                if (currentUser == null)
                    currentUser = new Utilisateur() { Nom = this.Nom, Prenom = this.Prenom, Email = this.Email };
     
     
                Sondage newSondage = new Sondage() { Nom = this.Nom, Date_fermeture = DateTime.Now, Date_ouverture = DateTime.Now, Utilisateur_Id = currentUser.Id };

    currentUser.Id vaut toujours 0. Il ne m'incrémente pas automatiquent la valeur...

    Du coup, je dois faire cela mais c'est pas tres propre...

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Utilisateur currentUser = Entities.Instance.DataContext.Utilisateurs.FirstOrDefault(e => e.Email == Email);
                if (currentUser == null)
                {
                    currentUser = new Utilisateur() { Nom = this.Nom, Prenom = this.Prenom, Email = this.Email };
                    Entities.Instance.DataContext.Utilisateurs.AddObject(currentUser);
                    Entities.Instance.DataContext.SaveChanges();            }
    
                currentUser = Entities.Instance.DataContext.Utilisateurs.FirstOrDefault(e => e.Email == Email);
                Sondage newSondage = new Sondage() { Nom = this.Nom, Date_fermeture = DateFermeture, Date_ouverture = DateOuverture, Utilisateur_Id = currentUser.Id, Nb_participants = 0 };

Discussions similaires

  1. [C#] Problème de casting de @IDENTITY
    Par bilb0t dans le forum Accès aux données
    Réponses: 7
    Dernier message: 03/09/2004, 09h42
  2. Problème avec @@IDENTITY
    Par MiJack dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2004, 10h30
  3. Utilisation simple d'@@IDENTITY avec asp
    Par Ajrarn dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2003, 10h37
  4. Insert ds une column identity
    Par Trahwn dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 06/10/2003, 15h14
  5. Récupération de @@IDENTITY
    Par bifidus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/09/2003, 16h39

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