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

C# Discussion :

"empreinte digitale" d'un objet


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut "empreinte digitale" d'un objet
    Bonjour,

    j'aimerais savoir si il ya un moyen d'identifier un objet, par une chaine de caractere ou une clef par exemple.

    le but et d'avoir une liste d'objet, de stockè leur informations en base.

    le problème se pose lors de mise a jour et suppresion. il faut savoir qu'un certain objet correspondant a un certain enregistrement(en base) et inversement.


    suis je clair? je ne sais pas trop....

    il me faudrais un outils me permettant d'identifier de maniere unique un objet instancier. sous le meme principe que les empreinte digital d'un etre humain

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    J'aurais tendance à penser que le hash code des objets pourrait être utilisé (méthode Object.GetHashCode). Mais je crois que rien ne garanti son unicité, inutilisable pour un lien durable donc. D'autant plus qu'entre plusieurs exécutions un même objet peut avoir des hash code différent il me semble.

    Il serait plus simple, dans tes objets, de faire un lien vers l'enregistrement en base associé (l'enregistrement a bien un identifiant ?), et lorsque tu dois modifier / "détruire" l'objet tu mets à jour l'enregistrement au passage.
    Pas de questions techniques par MP

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    sinon tu peux utiliser une solution ORM (mapping objet/relationnel), type Linq to SQL (si tu utilises SQL Server comme BDD), Entity Framework (encore en beta), ou NHibernate.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    l'identifiant, dans la logique des choses serais l'identifiant de l'objet....

    le GetHashCode se genere a partir des donnèes(je presume?) donc il va changer en cour d'utilisation


    le mapping objet, c'est en cela que consiste mon projet

    je doit donc pouvoir l'utiliser sur un objet de tout type(sans champ specialement dediè a la mise en base)

    ensuite pour le mapping objet je l'ai utiliser avec Vanatec OpenAccess en stage

    j'aimerais maintenant avoir mon propre programme de mise en base d'objet(moins puissant certe)


    tomlev => je ne connais pas tes solutions, yen a t-il une qui me donne un resultat generalisable (sql serveur, mysql.............)

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par TheBlackReverand Voir le message
    je doit donc pouvoir l'utiliser sur un objet de tout type(sans champ specialement dediè a la mise en base)
    ça ce n'est pas possible : il faut au moins un identifiant qui corresponde à l'identifiant en base
    Citation Envoyé par TheBlackReverand Voir le message
    tomlev => je ne connais pas tes solutions, yen a t-il une qui me donne un resultat generalisable (sql serveur, mysql.............)
    Entity framework et NHibernate sont indépendants de la BDD utilisée

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    voici un exemple du resultat voulus

    class toute simple representant un eleve par son nom, prenom et age
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Eleve
    {
        public string Nom;
        public string Prenom;
        public int Age;
    }
    dans ma base j'aurais donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    id_Eleve
    nom
    prenom
    age
    avec pour id_Eleve l'empreinte de mon objet

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    je comprends pas... pourquoi tu veut pas mettre id_Eleve dans la classe Eleve ? c'est la seule chose qui te permettrai de faire le lien avec l'enregistrement en base...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    si justement c'est pour sa que je le stock

    id_Eleve et un champ de ma table qui me permet de dir "cette enregistrement correspond a cet objet"

    id_Eleve est mon element de liaison


    se que je ne sais pas, c'est ce que je doit y stocker, ce qui identifie l'instance d'un objet de maniere uniquement

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par TheBlackReverand Voir le message
    se que je ne sais pas, c'est ce que je doit y stocker, ce qui identifie l'instance d'un objet de maniere uniquement
    Il n'y a pas de moyen d'identifier un objet de façon unique en dehors d'un contexte donné. Ce que tu dois mettre dans le champ id_Eleve de la classe, c'est la valeur du champ dans la base (la clé primaire)
    Et dans la base, tu mets dans ce champ une valeur unique (par exemple un champ autoincrémenté)

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Points : 338
    Points
    338
    Par défaut
    ok donc pas moyen d'obtenir un numero/chaine de caractere unique a partir d'un simple objet du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Eleve
    {
        public string Nom;
        public string Prenom;
        public int Age;
    }
    je suis donc obliger de lui mettre un identifiant pour relation avec la base

    ma class deviens donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Eleve
    {
        public int Num_Enregistrement_in_DataBase
        public string Nom;
        public string Prenom;
        public int Age;
    }
    c'est ce que je voulais savoir, merci

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

Discussions similaires

  1. Gerer les empreintes digitales dans un SGBDR.
    Par WOLO Laurent dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 31/12/2004, 12h26

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