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

NHibernate Discussion :

NHibernate contrainte unicité sur plusieurs colonnes


Sujet :

NHibernate

  1. #1
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 403
    Points : 3 012
    Points
    3 012
    Par défaut NHibernate contrainte unicité sur plusieurs colonnes
    Bonjour,

    Ma base de données contient (entre autres) 1 table Utilisateurs et 1 table Filtres.

    Chaque utilisateurs peut définir plusieurs filtres.
    Chaque filtre a un nom qui doit être unique pour un utilisateur donné.
    Mais 2 utilisateurs différents peuvent très bien utiliser le même nom pour un de leurs filtres.

    Mon problème est que je ne trouve pas comment définir le mapping pour définir cette contrainte d'unicité Utilisateur-nom de filtre.

    J'ai bien la solution de coder ce qu'il faut pour vérifier à chaque fois mais je trouve qu'il serait plus propre de mettre ça directement comme une contrainte au niveau mapping. D'autant que c'est ce mapping qui se charge de générer la base de données Access quand c'est nécessaire.

    Voici mon mapping actuel (épuré du superflu pour ce problème)

    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
    26
    27
     
    <class name="Filter" table="Filters" lazy="true" >
     
    <id
      name="Id" column="id_filter" type="System.Int32" unsaved-value="null">
      <generator class="native"/>
    </id>
     
    <property name="Name" column="name"	not-null="true"	type="System.String" length="150" />
     
    <many-to-one name="User" column="id_user" not-null="false" class="User" />
     
    </class>
     
     
    <class name="User" table="Users" lazy="true" >
     
    <id name="Id" column="id_user" type="System.Int32" unsaved-value="null">
      <generator class="native"/>
    </id>
     
    	<set name="Filters" lazy="true" inverse="true">
    		<key column="id_user"/>
    		<one-to-many class="Filter"/>
    	</set>
     
    </class>
    Quelqu'un ici saurait-il comment faire ce genre de chose ?

    Papy !

  2. #2
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Tu n'as pas la possibilité de faire une contrainte unique comprenant les colonnes de l'ID de l'utilisateur et du nom du filtre ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 403
    Points : 3 012
    Points
    3 012
    Par défaut
    Citation Envoyé par laedit Voir le message
    Tu n'as pas la possibilité de faire une contrainte unique comprenant les colonnes de l'ID de l'utilisateur et du nom du filtre ?
    C'était justement ma question :-)

    J'ai fini par trouver. Il faut ajouter un paramètre unique-key de même valeur pour les colonnes que l'on veut regrouper sous forme d'index. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <property name="Name" column="name" not-null="true" type="System.String" length="150" unique-key="nom_de_la_cle" />
     
    <many-to-one name="User" column="id_user" not-null="false" class="User" unique-key="nom_de_la_cle" />
    ... et le tour est joué ... (enfin, je fais le beau là, mais j'ai mis un bon moment à trouver )

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/12/2012, 15h36
  2. Contrainte d'unicité sur 6 colonnes
    Par sarabaïte dans le forum Langage SQL
    Réponses: 6
    Dernier message: 05/03/2011, 22h43
  3. Contrainte "d'exclusivité" sur plusieurs colonnes
    Par b_lob dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/08/2009, 12h03
  4. Réponses: 7
    Dernier message: 10/09/2008, 15h53
  5. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 15h22

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