J'ai une base de données héritée et j'essaye de créer un DAL NHibernate. J'ai un problème avec un mappage sur la table Many-To-Many.NHibernate Many-to-many
Les tables de base de données:
studio_Subscribers
studio_Groups
(contient un IList des abonnés)studio_Subscribers_Groups
- Many-to-Many table avec les clés primaires
Le problème est quand Je crée une instance SubscriberGroup
et le remplir avec les abonnés, ils sont enregistrés dans la table studio_Subscribers
, mais pas t à la table Many-To-Many.
Je n'arrive pas à comprendre ce qui ne va pas?
mapping table studio_Subscribers
:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Meridix.Studio.Common"
namespace="Meridix.Studio.Common">
<class name="SubscriberItem" table="studio_Subscribers">
<id name="StorageId" column="Id" unsaved-value="0" access="nosetter.camelcase">
<generator class="identity" />
</id>
<property name="Id" column="DomainId" not-null="true" />
<property name="Subscriber" column="Subscriber" not-null="true" length="50" />
<property name="Description" column="Description" not-null="false" length="100" />
<property name="Type" column="Type" not-null="true" length="40"
type="Meridix.Studio.Data.Repositories.EnumStringTypes.SubscriberTypeEst, Meridix.Studio.Data.Repositories" />
</class>
</hibernate-mapping>
mapping table studio_Groups
:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Meridix.Studio.Common"
namespace="Meridix.Studio.Common">
<class name="SubscriberGroup" table="studio_Groups">
<id name="StorageId" column="Id" unsaved-value="0" access="nosetter.camelcase">
<generator class="identity" />
</id>
<property name="Id" column="DomainId" not-null="true" />
<property name="Name" column="Name" not-null="true" length="200" />
<property name="Description" column="Description" not-null="false" length="300" />
<bag name="Subscribers" table="studio_Groups_Subscribers" access="nosetter.camelcase">
<key column="GroupId"></key>
<many-to-many column="SubscriberId" class="SubscriberItem" />
</bag>
</class>
</hibernate-mapping>
jishi: Vous m'avez sauvé. Merci. Pour le reste: Assurez-vous que vous avez les deux classes se référant les uns aux autres, définissez les deux sacs de chaque côté (assurez-vous que l'un est inverse, l'autre ne l'est pas). Et n'oubliez pas de définir les références pendant runtinme: a.bList.Add (b); b.aListe.Ajouter (a); – Nils