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 :

Eviter Auto insert


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut Eviter Auto insert
    Bonjour,

    J'ai actuellement un problème dans un de mes applications :

    J'utilise donc Linq to SQL, dans une des fenêtre je simules la génération d'éléments à intégrer dans la base de données, que j'ajoute dans une liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Prestation pres = new Prestation();
    pres.Id = Guid.NewGuid();
    ...
     
    PrestationsGeneres.Add(pres);
    Cependant, tout les éléments générés ne devront pas être insérés, si je relances la simulation, je remet à zéro ma liste et régénère d'autres éléments.

    Le problème que j'ai est le suivant :

    Lorsque j'insère mes éléments dans la base de données via un InsertOnSubmit et que j'effectues le SubmitChanges(), l'entier-té des éléments générés, y compris ceux qui ont été supprimés de ma liste sont insérés.

    Que faire ? :/

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    Bon en fait j'ai trouvé d'où cela venait, lors de la simulation de mes éléments, j'initialisais à mes éléments des références vers d'autres éléments de ma base de données.

    De ce fait, les éléments sont automatiquement insérés pour que ces éléments soient connus de l'autre coté de la relation.

    Pour éviter cette persistance automatique, j'ai du initialiser les clés étrangères de mes éléments, non directement par les entités mais par les ID :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Prestation pres = new Prestation();
    pres.Id = Guid.NewGuid();
    pres.Facturable = checkBoxFacturable.Checked;
    pres.RefClient = tier.Id;
    ...
    Au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Prestation pres = new Prestation();
    pres.Id = Guid.NewGuid();
    pres.Facturable = checkBoxFacturable.Checked;
    pres.Client = tier;
    ...

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

Discussions similaires

  1. auto insertion de résultat de menu
    Par Jean-Seba dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/06/2012, 20h08
  2. Eviter l'insertion de doublon en base
    Par GLSpirit dans le forum Oracle
    Réponses: 2
    Dernier message: 10/02/2011, 19h23
  3. [MySQL] Eviter l'insertion de doublons
    Par bond70 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 28/05/2010, 17h45
  4. [MySQL] Eviter l'insertion de doublons
    Par Budy123 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/03/2010, 20h15
  5. generer un numero auto a chaque insertion
    Par julio84 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 15/07/2003, 13h22

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