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 :

Generer un code client unique


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2003
    Messages : 165
    Par défaut Generer un code client unique
    Bonjour,

    Je dois générer un code client unique pour une entité de client avec entity framework. Problème je peux pas faire des bidouilles genre un trigger dans la base, je dois utiliser la couche métier entity. Comment dire à entity, par exemple génère moi un nombre unique (ou même à la limite recopie l'id de l'entité dans ce champs s'il est vide).

    Je ne peux pas faire deux sauvegardes (genre sauver l'entité, récupérer son id donné par la base et refaire une sauvegarde de se nombre dans "code client", faudrait tout faire en une fois).

    Ce n'est pas un id de la table mais bien un autre champ.

    Merci de vous conseilles

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Utiliser les GUID : ça assure l'unicité et la complétude d'un objet avant sa persistence.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2003
    Messages : 165
    Par défaut
    oui mais non, là je dois prendre un numéro car ça doit pouvoir être synchronisé avec d'autre système qui vont mettre cette élément comme clé dans un champ int.

    Mais merci j'ai utilisé ça pour un autre système.

    Sinon j'ai pensé utiliser Timer.Tick mais ça fait un numéro vachement long...

  4. #4
    Membre Expert Avatar de Er3van
    Homme Profil pro
    Architecte Logiciel
    Inscrit en
    Avril 2008
    Messages
    1 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte Logiciel
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 430
    Par défaut
    Si tu veux de l'unicité c'est forcément quelque chose d'assez long.... sauf si tu peux réduire le scope de l'unicité.
    Par exemple, si tu sais qu'il ne peut jamais il y avoir deux opérations similaire dans la même minutre, tu peux juste prendre yyMMdd-HHmmss...

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2003
    Messages : 165
    Par défaut
    est ce qu'il y a une règle pour mettre un champs dans un autre plutôt?

    est ce qu'on peut simuler des triggers mais dans entity?

    je devrais mettre "une valeur + id" dans ce champs.

    Merci

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Husqvarna Voir le message
    est ce qu'il y a une règle pour mettre un champs dans un autre plutôt?


    est ce qu'on peut simuler des triggers mais dans entity?
    Là encore, je ne comprends pas bien ... le trigger étant quelque chose de spécifiques aux base de données, ta demande n''est pas bien claire.

  7. #7
    Invité
    Invité(e)
    Par défaut


    Pour simuler un Trigger (insert, update ou delete) il faut que tu t'abonnes à l'évènement SavingChanges de ton contexte. À partir du gestionnaire de l'évènement tu pourras récupérer les entités qui sont en phase d'être mises à jour, d'être insérées, ou d'être supprimées. Dans ton cas à toi, tu as juste besoin de récupérer les entités type client qui sont en phase d'insertions, donc tu dois te te baser sur la propriété ObjectStateManagement de ton contexte et sur l'état Added de tes entités (j'ai fourni récemment un exemple via cette discussion) pour récupéer les nouveaux clients. Une fois que tu as la liste tu la parcours pour attribuer à chacun un numéro UNIQUE (si c'est une clef primaire de ta base de données ou s'il y a une contrainte d'unicité définie).

Discussions similaires

  1. generer son code client sous firebird ?
    Par BXDSPORT dans le forum Bases de données
    Réponses: 12
    Dernier message: 14/12/2009, 15h16
  2. Réponses: 3
    Dernier message: 29/01/2008, 09h51
  3. Réponses: 44
    Dernier message: 02/08/2006, 16h12
  4. Réponses: 2
    Dernier message: 27/04/2006, 16h45
  5. [C#] Comment générer le code à partir du WSDL ?
    Par Piolet dans le forum Services Web
    Réponses: 2
    Dernier message: 27/08/2004, 13h30

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