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

Linq Discussion :

dupliquer un enregistrement


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut dupliquer un enregistrement
    Bonjour, je souhaite dupliquer un enregistrement, et modifier l'enregistrement original.

    Actuellement je fais 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
    25
     
     
    ACTION a = db.ACTION.Single(act => act.ACCLEUNIK == Convert.ToDecimal(SessionUtilsPDAC.Accleunik));
     
            ACTION newaction = a;//new action est l'action du plan d'action
            if (!string.IsNullOrEmpty(ddlEtape.SelectedValue))
            {
                int NumAC = procRapp.DefNumAC(ddlEtape.SelectedValue);
                newaction.Num_AC = NumAC;
                newaction.LossID = ddlEtape.SelectedValue;
            }
            //Mette à jour l'action ds le RD : statut -> gerer dans plan d'action, fini ac =1, fini ac_1 = 1
            a.Statut = StatutAction.gererDsPDAC;
            a.StatutModifieLe = DateTime.Now;
            a.Fini_AC = true;
            a.Fini_AC_1 = true;
     
            try
            {
                db.SubmitChanges();
     
            }
            catch (Exception ex)
            {
            }
    Le problème c'est qu'il me supprimer l'enregistrement original (plus dans la base).

    Comment je peux faire pourdupliquer l'enregistrement, travailler sur le nouveau et l'ancien et faire un seul submit à la fin.

    Merci de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Hello, à mon sens ton souci est là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ACTION a = db.ACTION.Single(act => act.ACCLEUNIK == Convert.ToDecimal(SessionUtilsPDAC.Accleunik));
     
            ACTION newaction = a;//new action est l'action du plan d'action
    Tu ne crée pas un nouvel Action, tu pointes vers l'ancien, et donc, il ne crée par ton nouveau et supprime ton ancien, il prend ton ancien et le met à jour le faisant passer pour ton nouveau.

    Comment tu devrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Action A = ...
    Action clone = Action.Copy(A);
     
    ...Traitement...
     
    db.Action.Add(clone);
    submitChanges();
    la méthode copy ne va faire elle que copier tes valeurs de A vers clone. Tu peux aussi faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Action a = ...
    Action clone = new Action();
    clone.Prop1 = a.Prop1;
    ...
    Je me demande comment ça se passerait si on définissait l'interface ICloneable, j'imagine qu'il copierait les références entity, ce qui ne serait pas bon

  3. #3
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    C'est ce que je pensais, qu'il ne copiait pas directement et qu'il devait faire un pointeur sur le 1er objet ACTION.

    Je vais tester ta méthode avec le copy.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Action a = ...
    Action clone = new Action();
    clone.Prop1 = a.Prop1;
    ...
    Cela j'avais déjà commencé à le faire, le souci c'est que c'est une grande table et y'en une 30taine de champs à renseigner, c'est pour cela que je voulais copier les données de ma table.

    Je vais tester, merci en attendant

  4. #4
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Euh, j'ai un souci, je n'ai pas la méthode clone sur mon objet action.

    Y'a t'il une autre solution?

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Il n'y a aps la méthode clone ? C'est à dire ?
    Tu parles de mon Action.Copy() ? Ou bien d'une méthode Clone() (dans ce cas là il faut implémenter ICloneable si je ne m'abuse)

    Tu as décidé de ne plus faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Action a = ...
    Action clone = new Action();
    clone.Prop1 = a.Prop1;
    ??

  6. #6
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    Oui c'est bien cela je n'ai pas de ACTION.Copy() ou encore de db.ACTION.copy() ni clone,

    je voulais abandonner cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Action a = ...
    Action clone = new Action();
    clone.Prop1 = a.Prop1;
    mais à priori je vais quand meme devoir le faire. C'est à quel endroit que je devrais implementer Iclonable. C'est quand meme bizarre que l'on ne puisse pas dupliquer simplement un enregistrement quand meme. Sinon je le ferai à l'ancienne méthode ou je vais affecter mes 30 champs de table.

    Merci du coup de main

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

Discussions similaires

  1. Dupliquer Un Enregistrement
    Par MITCH31 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 16/05/2006, 11h30
  2. [8i][forms 6i] dupliquer un enregistrement
    Par Magnus dans le forum Oracle
    Réponses: 18
    Dernier message: 08/03/2006, 16h50
  3. dupliquer un enregistrement dans un table liée
    Par RICHARDSEBIRE dans le forum Access
    Réponses: 9
    Dernier message: 24/02/2006, 11h57
  4. Comment dupliquer un enregistrement via le code ?
    Par massol joel dans le forum Access
    Réponses: 2
    Dernier message: 11/11/2005, 19h01
  5. Dupliquer un enregistrement complet d'une table paradox
    Par sylvie cl dans le forum Bases de données
    Réponses: 10
    Dernier message: 21/09/2005, 14h16

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