プロパティの1つにPhotosプロパティ(IListタイプ)が含まれているUserオブジェクトがあります。Nhibernate - 依存テーブルでオブジェクトを保存する
SQLデータベース内のテーブルは、外部キーによって結合されます。すなわち
表ユーザー{長いNULL NOTユーザーID .......} 表UserPhoto {PHOTOID長いNULL NOT、ユーザーID長くないヌル参照[ユーザー] .UserId ........}
したがって、対応するUser行がないと、userphotoに行を挿入することはできません。
私ができることをしたいのは、コード内にUser Objectを構築し、UserPhotoオブジェクトのIlistを追加することです(Userオブジェクトは保存されていないので、必ず空白のユーザーIDが必要です)。身元はまだ挿入によって作成された)
<class name="User" table="[User]">
<id name="UserId" column="Id">
<generator class="identity" />
</id>
<bag name="Photos" order-by="DisplayOrder asc" cascade="all">
<key column="UserId" />
<one-to-many class="UserPhoto" />
</bag>
</class>
<class name="UserPhoto" table="UserPhoto">
<id name="PhotoId" column="Id">
<generator class="identity" />
</id>
<property name="UserId" />
</class>
を次のように
私のマッピングがあるしかし、私は試してみて、NHibernateはSession.Save(ユーザー)を持つユーザオブジェクトを保存するとき、それは外部キー制約が失敗したというエラーがスローされます。だから私は、ユーザーテーブルの前にリスト内のユーザーの写真を挿入しようとしているか、または新しく生成されたユーザーIDプロパティを写真に設定せず、nullユーザーIDで保存しようとしています。
これは外部キー列で、それが適用されることを示すためにマッピングに何か追加する必要がありますか?nhibernateは依存する行を正しい順序で挿入する方法を知っていますので、 ?
リンクありがとうございました。あなたが投稿したリンクからまだエラーが出ていますが、私はの子の宣言にマッピングが必要な印象を受けていますか?上記のUserPhoto宣言が表示された場合は、UserIdをプロパティとしてマッピングするだけです。これは問題ですか? FKの関係について知るためにUserPhoto宣言で何をする必要がありますか?私はUserId上でPlain Many to Oneを実行しようとしましたが、「UserPhotoテーブルからの関連付けはマップされていないクラスを参照しています:System.Int32」 –
NZJames
inverse = trueを使用すると、コード内の関係を管理する必要があります。詳細は私の答えです。 –
私は答えを更新しました。 UserIdのプロパティリファレンスを多対1ユーザーマッピングに変更し、UserPhotoクラスを – reach4thelasers