Je ne sais pas comment poser la question, car je ne sais pas ce que je ne sais pas, et donc je ne connais pas la terminologie appropriée pour ce que j'essaie d'obtenir la réponse. Je vais expliquer mon scénario, dans l'espoir que cela aidera:NHibernate cartographie de la collection de recherche (si cela a un sens)
J'ai trois tables, une table de livre, une table d'étiquette et une table de recherche de BookTag. Chaque livre a un ID, un titre (pour les débutants) Chaque étiquette a un ID et un titre Chaque BookTag a un ID, un BookID et un TagID.
Un livre peut être étiqueté avec plusieurs étiquettes et une étiquette peut être utilisée sur plusieurs BookID.
J'ai mes objets configuration de cette façon:
Book.cs
int BookID
string Title
List<BookTag> Tags
Tag.cs
int TagID
string Title
BookTag.cs
int ID
int BookID
int TagID
je voudrais la classe Books.cs d'avoir une collection de mots clés, et non BookTags, mais je ne peux pas sembler obtenir le droit de cartographie dans NHibernate. Voilà ce que j'ai le fichier Book.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DomainModel" namespace="DomainModel.Books">
<class name="DomainModel.Books.Book" table="Books">
<id name="BookID" type="Int32" unsaved-value="0">
<generator class="native"/>
</id>
<property name="Title" type="String" not-null="true"/>
<set lazy="true" name="Tags" table="BookTags" generic="true" inverse="true" cascade="delete">
<key column="BookID"/>
<one-to-many class="DomainModel.Books.BookTag, DomainModel"/>
</set>
</class>
</hibernate-mapping>
Et voici mon BookTag.hbm.xml:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DomainModel" namespace="DomainModel.Books">
<class name="DomainModel.Books.BookTag" table="BookTags">
<id column="BookTagID" name="BookTagID" type="Int32" unsaved-value="0">
<generator class="native"/>
</id>
<many-to-one name="Tag">
<column not-null="true" name="TagID"/>
</many-to-one>
<many-to-one name="Book">
<column not-null="true" name="BookID"/>
</many-to-one>
</class>
</hibernate-mapping>
Selon ce modèle, je peux obtenir à la balise Je veux en utilisant mon modèle d'objet: Book.Tags [0] .Tag, mais cela semble inefficace. Puis-je utiliser NHibernate pour mapper le BookTags.TagID avec Tags.TagID dans la base de données afin que je puisse obtenir Book.Tags [0] pour retourner un objet Tag, au lieu d'un objet BookTags? Je ne connaissais pas de meilleure façon d'associer Books à des balises afin qu'une balise utilisée sur Book1 puisse être utilisée sur Book2 sans ajouter de nouvelle entrée à la table Tags. J'espère que cela fait au moins un certain sens. Faites-moi savoir si vous avez besoin de plus de précisions. Je posterai ma solution ici si je la découvre avant que quelqu'un ne réponde.
Merci pour cette question !!!!! ~ –