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 :

Ajout d'un enregistrement de type complexe [question bête]


Sujet :

Entity Framework

  1. #1
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut Ajout d'un enregistrement de type complexe [question bête]
    Hello tout le monde.

    Bon, je m'y suis fait finalement a EF... C'est pas si mal.

    Je dois raté une petite astuce :

    Je veux créer un enregistrement de type Client qui contient lui même un lien vers un objet de type Reference.
    Et je voudrai créer le tout en une fois...

    J'ai essayé deux choses qui m'ont paru naturel... Puis non en fait...

    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
     
     Public Sub Add(ByVal DTO_Client As ClassLibrary_DTO.Client)
     
            Dim DAL_Client As New Client
            DAL_Client .Nom = DTO_Client .Nom
     
            Using ctx As TestEntities= New TestEntities()
     
                ctx.Configuration.AutoDetectChangesEnabled = True
     
                //C est là le problème
                DAL_Client.reference = ctx.References.Where(Function(t) t.ID_reference = Client.ID_reference)
     
                ctx.Client.Add(DAL_Client)
                ctx.SaveChanges()
     
            End Using
     
        End Sub

    Me dis qu'il ne peut pas prendre une référence de type "context-machin-chose" en DAL... et c'est pas faux
    Puis ceci :


    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
    22
    23
    24
     
     Public Sub Add(ByVal DTO_Client As ClassLibrary_DTO.Client)
     
            Dim DAL_Client As New Client
            DAL_Client .Nom = DTO_Client .Nom
     
            Dim DAL_reference as New Reference
            DAL_reference.ID_reference = DTO_Client.Reference.ID_reference
            DAL_reference.ID_libelle = DTO_Client.Reference.ID_libelle
     
            DAL_Client.Reference = DAL_Reference
     
            Using ctx As TestEntities= New TestEntities()
     
                ctx.Configuration.AutoDetectChangesEnabled = True
     
                ctx.Client.Add(DAL_Client)
     
                //C est là le problème
                ctx.SaveChanges()
     
            End Using
     
        End Sub
    Et là me dis qu'il y a un problème de conflit de clé avec la référence... Et oui car il essaie de la créer... Puisqu'il ne sait pas duquel je parle...

    Ma question est donc simple :

    Comment je fais pour ajouter un client avec sa référence, sans devoir l'enregistrer sans référence dans un premier temps, puis le recharger et le lié dans l'entities....
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Déjà 10 visites... et pas d'aide... Question pas si bête peut être ? (ou alors vraiment trop)
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Je trouve ça sur le net ::

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    using (var context = new Context()) 
    { 
        //Create a product and a relationship to a known category by ID 
        Product p = new Product 
        { 
            ID = 1, 
            Name = “Bovril”, 
            CategoryID = 13 
        };  
        //Add the product (and create the relationship by FK value) 
        context.Products.AddObject(p); 
        context.SaveChanges(); 
    }
    Du coup je fais pareil :

    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
     Public Sub Add(ByVal DTO_Client As ClassLibrary_DTO.Client)
     
            Dim DAL_Client As New Client
            DAL_Client .Nom = DTO_Client .Nom
     
            Using ctx As TestEntities= New TestEntities()
     
                ctx.Configuration.AutoDetectChangesEnabled = True
     
                //C est là le problème
                DAL_Client.ID_reference = Client.ID_reference
     
                ctx.Client.Add(DAL_Client)
                ctx.SaveChanges()
     
            End Using
     
        End Sub
    Mais a moi, il me dit évidemment qu'il y a un conflit....
    C'est pas clair tout ça...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    635 vues...

    Aucune idée sur comment créer un élément en mode déconnecté qui avec une clé étrangère ?

    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Heu.....

    Ca marche en fait... Enfin, ça marche de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        DAL_Client.ID_reference = DTO_Client.ID_reference

    L'erreur était dans l'UI, je ne chargais pas correctement DTO_Client.ID_reference, le code avait donc mis 0 comme valeur...
    D'où l'erreur...

    C'est souvent comme ça quand il n'y a pas de réponse... c'est qu'il n'y a pas vraiment de problème...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/03/2008, 20h10
  2. AJOUT d'un ENREGISTREMENT dans UNE TABLE
    Par ramo dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/08/2005, 16h24
  3. Ajouter a une variable de type string, un entier
    Par Little-Freud dans le forum SL & STL
    Réponses: 12
    Dernier message: 05/03/2005, 19h33
  4. Réponses: 10
    Dernier message: 16/12/2004, 15h23

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