J'ai une relation plusieurs-à-plusieurs existante dans SQL qui est mappée à mes entités commerciales via NHibernate.NHibernate many-to-many - comment récupérer une propriété de la table de jointure et l'associer à un enfant?
Je souhaite ajouter une propriété à l'enfant (Catégorie ci-dessous) qui s'applique uniquement à la relation entre le parent et l'enfant. En SQL, j'ajouterais un champ à la table de jointure. Comment utiliser NHibernate pour extraire cette valeur de la table de jointure et l'associer à la propriété d'un enfant?
Comment utiliser NHibernate pour extraire cette valeur de la table de jointure et l'associer à la propriété d'un enfant?
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="MyProject.Core.Entities"
assembly="MyProject.Core">
<class name="Product" table="Products" lazy="false">
<id name="ProductId" access="field">
<generator class="native" />
</id>
<property name="ProductName" access="field" />
<idbag name="Categories" table="ProductCategory">
<collection-id column="ProductCategoryId" type="int">
<generator class="native" />
</collection-id>
<key column="ProductId" />
<many-to-many column="CategoryId" class="Category" />
</idbag>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="MyProject.Core.Entities"
assembly="MyProject.Core">
<class name="Category" table="Categories" lazy="false">
<id name="CategoryId" access="field">
<generator class="native" />
</id>
<property name="CategoryName" access="field" />
</class>
</hibernate-mapping>
Alors je commence à voir une tendance. Est-il sûr de dire qu'en ajoutant des données à ma relation plusieurs-à-plusieurs, j'ai maintenant un un-à-plusieurs du parent à la relation et un un-à-un de la relation à l'enfant? La relation est-elle une nouvelle entité comme suggéré dans http://stackoverflow.com/questions/2713329/nhibernate-many-to-many-relationship-with-field-in-the-relationship-table? – Mayo
La relation est une nouvelle entité. Le plusieurs-à-plusieurs dans NHibernate est essentiellement un raccourci qui vous permet d'ignorer cette étape lorsque vous n'incluez aucune donnée supplémentaire dans le lien. Votre compréhension des relations est correcte (je les ai ajoutées à la réponse). – Kendrick
Eh bien, ça a demandé un peu d'effort mais ça marche maintenant. Je suis reconnaissant pour le couplage lâche et les tests unitaires. Merci pour la poussée dans la bonne direction. – Mayo