次の Nhibernate XML ファイルがあり、コア ビットに編集されています。
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping assembly="TTP.DAO" namespace="TTP.DAO" xmlns="urn:nhibernate-mapping-2.2">
<class name="InitialProcessSetup" table="InitialProcessSetup" lazy="true" >
<id name="SetupID" column="setupID" unsaved-value="0" type="System.Int32">
<generator class="identity"/>
</id>
<property name="DateCreated" column="DateCreated" />
<many-to-one class="StoredUser" name="CreatedBy" column="CreatedBy" cascade="all-delete-orphan" not-null="true"/>
<property name="OriginalDeadline" column="Deadline" />
<property name="Detail" column="Detail" />
<bag name="Subjects" table="InitialProcessSetupRatingSubject" inverse="true" cascade="all-delete-orphan">
<key column="SetupId" not-null="true" />
<many-to-many column="SubjectStoredUserId" class="StoredUser" />
</bag>
<bag name="Reviewers" table="InitialProcessSetupReviewer" cascade="all-delete-orphan">
<key column="SetupId" not-null="true" />
<many-to-many column="ReviewerStoredUserId" class="StoredUser" />
</bag>
<bag name="Invitations" cascade="all-delete-orphan">
<key column="Setup" not-null="true"/>
<one-to-many class="ProcessInvitation" />
</bag>
</class>
上記のマッピングで示されているクラスの新しいインスタンスを作成し、GenericDAO().SaveOrUpdate(setup); で保存します。また、メイン オブジェクトの詳細は保存されますが、ビットは保存されません。
クラス Subjects は、IList-StoredUser を返す仮想プロパティとして定義されています。クラス コンストラクターは、このプロパティを新しい List-StoredUser-() に設定します。
Subjects バッグ要素によって示されるテーブルは、SetupID 列と StoredUserID 列を持つ純粋なマッピング テーブルであり、それだけです。
保存する前に、派生した StoredUserDAO() に StoredUser を使用して Subjects リストに追加します。SaveOrUpdate() を呼び出した後、Flush() も呼び出します。
私のデータベース(SQL Server 2008R2)では、メインのセットアップデータが保存され、サブジェクトリストプロパティに追加した保存ユーザーも保存されます.マッピングテーブルに setupID/StoredUserID が追加されないだけです。
私は Nhibernate の初心者で、これは既存のプロジェクトです。何が間違っているかについての助けのアイデアをいただければ幸いです。