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 :

One to Many/One avec ASP.NET MVC et Entity Framework


Sujet :

Entity Framework

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 44
    Points
    44
    Par défaut One to Many/One avec ASP.NET MVC et Entity Framework
    Bonjour
    Je voulais faire quelque chose que je savais faire facilement quand j’étais développeur j2EE.
    Je suis nouveau dans ASP.NET MVC et visual studio 2010 et je veux faire une application pour un projet.
    J’ai 3 classes classA, classB et classC.
    Les relations entre les classes sont : [ classA (one to many) classB ] et [ classB (one to one) classC]
    J’ai toujours travailler avec les entitités pour la persistence de mes données avec les orm(hibernate , jpa ) et je veux faire exactement la même chose avec Entity Framework en utilisant SQL Server 2008.
    Je peux faire mes tables dans visual studio directement et créer mon EDM ou créer mon EDM à partir de ma base de données.
    J’arrive juste à enregistrer les données d’une table par table mais pas des relations genre créé les liaisons entre mes tables.

    Je cherche exactement ou dois-je faire quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private MonEntity entities = new MonEntity();
     
    public void CreateClassC(ClassC mobObjetC)
            {
    		classB b = new classB(“test”) ;
    		mobObjetC.ObjetB = b;
                    entities.AddToClassC(mobObjetC);
                    entities.SaveChanges();
     
            }
    C’est pour cette raison que j’ai postulé dans ce forum afin d’espérer quelques propositions.
    Merci d’avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    Je ne travaille pas avec entityframework.

    Par contre, et de manière générale mvc ne s'occupe que de la couche présentation (en dotnet ou en j2ee). Dans ta solution tu devrais avoir une couche persistance, et je mettrai ce code dedans.

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    C'est difficile de comprendre c'est où que tu bloque...

    As-tu réussi à modéliser tes objets avec les relations ?

    Avec Entity Framework et l'EDM tu peux générer des objets persistent ou des POCO (équivalent POJO)... Tu peux créer les associations directement dans l'EDMX...
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

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

    Tout d'abords ton problème n'a rien avoir le forum ASP.Net MVC mais plutôt sa place est dans le forume Entity Framework.

    Pour ton problème, tu cherches à savoir comment ajouter une entité ou une collection d'entités à un autre entité sachant que ces entités sont liées par des relations dans ton EDM.

    L'exemple de code que tu as fournit est correct. Sinon au lieu d'utiliser l'instruction
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    entities.AddToClassC(mobObjetC);
    tu peux utiliser si ta version d'EF est >= 4.0
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    entities.ClassC.Add(mobObjetC);

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Oui en fait j'arrive à modéliser mes classes avec leur relation dans EDM.

    Quand je regarde bien chacune de mes entity , je peux voir quelle table elle est mappée , mais pour une relation entre 2 entités je ne vois pas encore comment elle sera mappée.

    Mon problème est que si j'ajoute des données dans une table toute seule c'est bon , mais dès que je veux ajouter des données à une table lié à une autre je retrouve une erreure , donc ça provient de la relation many to one ...

    En plus de ça , je ne vois pas ou sont créer automatiquement les relations dans les entités qui ont été générées automatiquement par le EDM.

    je veux voir quelque chose du genre :

    dans l'entité classB par exemple :

    ses attributs + une ligne qui permet de faire l'association avec la classC (genre one to many ...) avec des List ou autre collection.

    J'ai tenté pas mal d'exmple , j'ai réussi à créer mes vues , controleur et modèle sans problème , j'ai vraiment besoin de savoir ce qui ne va pas !!!

    Procédure que j'ai suivi :
    1. création des entités directement dans visual studio avec les cardinalités...
    2. création de mon Modèle en utilisant Ado entity...
    3. création d'un contrôleur pour la classB par exemple
    4. création d'une vue pour la méthode create...

    Si classB est toute seule (sans liaison dans ma base de données) c'est bon , j'enregistre des données dans la table associé à la classB
    Si classB est liée à classC , je recois un message d'erreur lors de la création d'un objet classB.

    J'espère que j'ai été assez claire cette fois
    Et merci d'avance

  6. #6
    Invité
    Invité(e)
    Par défaut
    Peux-tu donner le message d'erreur que tu reçois ?

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 75
    Points : 44
    Points
    44
    Par défaut
    Bonsoir

    En fait j'ai crée une base de données dans sql sever 2008 et crée une connexion entre ma base de données et visual studio 2010.

    J'ai crée mon EDM en utilisant cette base de données qui est reproduit intégralement dans visual studio.

    Ma base de données contenait une seule table (Personne) dont une seule entité dans mon EDM.

    J'ai crée une vue pour lister toutes les personnes de la base de données et une autre vue pour créer une personne.
    J'arrive à créer une nouvelle personne et lister toutes les personnes correctement.

    A partir de là j'ai crée une nouvelle table( metier) dans ma base de données.
    Je met à jour mon model browser et vois apparaitre une nouvelle entité(metier).

    Je clique sur l'entité personne et ajoute une association de type (one )/(zero or one) avec l'entité metier( j'ai essayé les autres types de relation mais toujours le même problème).

    Je compile le projet afin d'avoir la liste de toutes les personnes enregistrés comme d'habitute et je récois cette exception :
    EntityCommandCompilationException

    C'est dans cette méthode que j'ai un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public IEnumerable<Personne> ListPersonnes()
            {
                return _entities.Personnes.ToList();
            }
    Si je supprime l'association entre les 2 entités tout marche bien.

    J'ai due comprendre qu'il fallait dorénavant ajouter une ligne qui contient les clés primaires de la table métier dans la table personne mais moi je ne veux pas travailler avec le relationnel en ajoutant directement cette ligne dans la table mais plutôt je veux le faire avec EF directement et dans les entités sauf que je ne sais pas ou faire ça exactement.

    Dans mon PersonneModel.Designer.cs je retrouve ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public static Personne CreatePersonne(global::System.Int32 id, global::System.String nom)
            {
                Personne pers= new Personne();
                pers.Id = id;
                pers.nom= nom;
                return pers;
            }
    je ne vois pas une ligne pour dire pers.ObjetDeTypeMetier qui s'est ajoutée...

    Et puis voilà ma méthode pour créer une personne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public Personne CreatePersonne (Personne persToCreate)
            {
                _entities.AddToContacts(persToCreate);
                _entities.SaveChanges();
                return persToCreate;
            }
    J'ai suivi plusieurs exemples et finalement je commence à mélanger le tout.

    J'ai vraiment besoin d'aide .

    Merci d'avance

Discussions similaires

  1. [Débutant] JQPLOT avec ASP.NET MVC
    Par Slavo dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 17/07/2014, 12h07
  2. [Débutant] Recherche instantannée avec asp.net MVC
    Par salmia22 dans le forum ASP.NET Ajax
    Réponses: 0
    Dernier message: 25/07/2013, 21h50
  3. Réponses: 6
    Dernier message: 04/08/2011, 19h37
  4. Rendu Partiel avec asp.net MVC
    Par trihanhcie dans le forum ASP.NET MVC
    Réponses: 2
    Dernier message: 25/02/2011, 18h36

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