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

ASP.NET Discussion :

Duplication d' entité


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 81
    Par défaut Duplication d' entité
    Bonjour,
    Pour un développement en asp.net vb.net, je dois faire une copie d'une entité ( via entity framework 4.0) afin de l’insérer dans une base de données.
    Voici mon code déjà 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
    20
    21
    22
    23
    24
    25
     
               Dim test As New Produit
               Using entites As IRepository(Of Produit) = ModelFactory(Of Produit).CreateManager
                //je recupère la donnée
                Dim read = entites.Read(myId)
                //je clone l'enregistrement
                test = Clone(Of Produit)(read)
                //je  détache du modèle
                entites.Detach(read)            
                test.EntityKey = Nothing
                test.ID = Nothing
               //je l'insert et la sauve
                entites.Create(test)
                entites.Save()
            End Using
        End Sub
        //fonction qui serialise et prepare le clonde
        Public Shared Function Clone(Of t)(source As IEntity) As t
            Dim obj = New DataContractSerializer(GetType(t))
            Using stream = New System.IO.MemoryStream()
                obj.WriteObject(stream, source)
                stream.Seek(0, System.IO.SeekOrigin.Begin)
                Return DirectCast(obj.ReadObject(stream), t)
            End Using
        End Function
    et j'obtiens l'erreur suivante :
    Un objet ayant la même clé existe déjà dans ObjectStateManager. ObjectStateManager ne peut pas assurer le suivi de plusieurs objets ayant la même clé.


    Avez vous une idée?

    Merci de vos réponses.

    Cdlt

  2. #2
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 81
    Par défaut
    En fait mon code marche, il suffisait que je fasse mon detach avant de le cloner :
    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
     
               Dim test As New Produit
               Using entites As IRepository(Of Produit) = ModelFactory(Of Produit).CreateManager
                //je recupère la donnée
                Dim read = entites.Read(myId)
               //je  détache du modèle
                entites.Detach(read)     
                //je clone l'enregistrement
                test = Clone(Of Produit)(read)
               //je l'insert et la sauve
                entites.Create(test)
                entites.Save()
            End Using
        End Sub
        //fonction qui serialise et prepare le clonde
        Public Shared Function Clone(Of t)(source As IEntity) As t
            Dim obj = New DataContractSerializer(GetType(t))
            Using stream = New System.IO.MemoryStream()
                obj.WriteObject(stream, source)
                stream.Seek(0, System.IO.SeekOrigin.Begin)
                Return DirectCast(obj.ReadObject(stream), t)
            End Using
        End Function
    Merci

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

Discussions similaires

  1. [MCD] Héritage ou bien duplication des entités !
    Par hindou90 dans le forum Schéma
    Réponses: 11
    Dernier message: 16/05/2011, 17h30
  2. [Normalisation] duplication des propriétés dans une entité
    Par switch1 dans le forum Schéma
    Réponses: 2
    Dernier message: 03/05/2009, 03h39
  3. [DOM] [Xerces] Insertion d'une entité
    Par Traroth dans le forum Format d'échange (XML, JSON...)
    Réponses: 10
    Dernier message: 19/05/2008, 09h28
  4. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  5. [MSXML] Comment empécher la conversion des entités ?
    Par nima dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/11/2002, 14h14

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