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

Accès aux données Discussion :

[Linq to Sql] Insert ou update ? telle est la question ...


Sujet :

Accès aux données

  1. #1
    Membre du Club
    Homme Profil pro
    Analyste bidouilleur
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Analyste bidouilleur

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 57
    Points
    57
    Par défaut [Linq to Sql] Insert ou update ? telle est la question ...
    Bonjour, petite bouteille a la mer concernat linq to sql.

    Lors de l’utilisation d’une clef primaire non généré par la base de donnée comment savoir si un objet mappé sur une table est une nouvelle instance ou a été récupéré de la base de donné ?
    Bref savoir s’il faut faire un update ou un insert.

    J’ai bien essayé d’utilisé le ChangeSet mais dans ce cas si un objet a été recuperé mais n’a pas été modifié impossible de faire le distingo avec un nouvel objet.

    La solution la plus simple semble de faire un constructeur a parametre (from_BD=false) pour mes objets mais j’ai vu sur la msdn que les objets été censé posseder un etat (untracked, unchanged … ) mais comment l’obtenir ?

    Désolé si la réponse parait évidente mais j’ai ratacherché avant de posté : et impossible de trouver la solution.

    Merci d’avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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
    Points : 2 331
    Points
    2 331
    Par défaut
    Comment définis-tu ta clé primaire ? Dans ton code via un setter ?

  3. #3
    Membre du Club
    Homme Profil pro
    Analyste bidouilleur
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Analyste bidouilleur

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 57
    Points
    57
    Par défaut
    bonjour,
    Ouida, ou via le constructeur quand c'est un fils de ...

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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
    Points : 2 331
    Points
    2 331
    Par défaut
    Normalement, la logique dans ton code ferait que tu connais l'origine de ton objet. Si tel n'est pas le cas, pourquoi ne pas prévoir un champ IsVersion avec autoIncrement d'un point de vue Linq, il ne resterait qu'à voir si ce IsVersion est égal à 1 ou supérieur...

  5. #5
    Membre du Club
    Homme Profil pro
    Analyste bidouilleur
    Inscrit en
    Juin 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Analyste bidouilleur

    Informations forums :
    Inscription : Juin 2007
    Messages : 51
    Points : 57
    Points
    57
    Par défaut
    Bonjour et merci de ta reponse,
    Je me rends compte que ma question etait mal posé : il est evident que j'ai trois milliard de possibilités pour faire un suivi de mes objets mais ce qui m'interrese surtout c'est de savoir comment marche ce sreugneuneu de suivi d'etat sous linq :
    http://msdn.microsoft.com/fr-fr/library/bb386982.aspx

    Merci tout plein,

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    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
    Points : 2 331
    Points
    2 331
    Par défaut
    Tu parles du ChangeSet dans ton premier post, apparemment c'est bien l'objet à utiliser, et de ce que je comprends, l'état Unchanged ne te permet pas de définir si ton objet vient d'un insert ou d'un update ?! Si c'est le cas, j'ai peur qu'il ne permettre pas de répondre à ton désir, vu que c'est un objet avant tout donné pour linq en interne...

Discussions similaires

  1. [Linq To SQL] Insertion non voulue
    Par LE NEINDRE dans le forum Accès aux données
    Réponses: 3
    Dernier message: 27/10/2008, 13h51
  2. [Linq to Sql] Insert et delete
    Par cKmel dans le forum Accès aux données
    Réponses: 19
    Dernier message: 23/10/2008, 13h10
  3. [Linq to Sql] Insertion de quelques champs uniquement
    Par binoo dans le forum Accès aux données
    Réponses: 5
    Dernier message: 16/02/2008, 14h29
  4. Réponses: 1
    Dernier message: 07/11/2007, 18h51
  5. [Pl/Sql] Insert ou Update dans une fonction
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 12
    Dernier message: 18/04/2006, 15h28

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