0

何度も尋ねられたことは知っていますが、このウェブサイトでも多くの回答を見つけましたが、この問題を解決できません。

このコードを手伝ってくれる人はいますか?

どうもありがとう。

ここに私の親マッピングファイルがあります

<set name="ProductPictureList" table="[ProductPicture]" lazy="true" order-by="DateCreated" inverse="true" cascade="all-delete-orphan" >
  <key column="ProductID"/>
  <one-to-many class="ProductPicture"/>
</set>

ここに私の子マッピングファイルがあります

<class name="ProductPicture" table="[ProductPicture]" lazy="true">
<id name="ProductPictureID">
  <generator class="identity" />
</id>
<property name="ProductID" type="Int32"></property>
<property name="PictureName" type="String"></property>
<property name="DateCreated" type="DateTime"></property>
</class>

ここに私のC#コードがあります

        var item = _productRepository.Get(productID);

        var productPictrue = item.ProductPictureList
            .OfType<ProductPicture>()
            .Where(x => x.ProductPictureID == productPictureID);

        // reomve the finding item
        var ok =  item.ProductPictureList.Remove(productPictrue);

        _productRepository.SaveOrUpdate(item);

ok は false 値で、この子オブジェクトはまだデータベースにあります。

4

2 に答える 2

0

100% 確実ではありませんが、ProductID を ProductPicture のプロパティとして定義したことが原因である可能性があります。これは Product クラスの PK であると想定しています。これを再度追加する必要はありません。関係によって作成されます。

于 2012-06-25T21:13:37.327 に答える
0

table="[ProductPicture]"set タグでの の使用が正しいかどうかわかりません。

1 対多のタグは、ProductPictureList と ProductPicture の間のリンクを既に確立しています。table 属性は、通常、多対 5 の関係をモデル化するときに別の関係テーブルを使用するためのものだと思います。

nhibernate.info Docから:

table (オプション - デフォルトはプロパティ名) コレクション テーブルの名前 (1 対多の関連付けには使用されません)

そして

コレクション テーブルは、値のコレクションと、多対多の関連付けとしてマップされた他のエンティティへの参照のコレクションに必要です。

于 2012-06-26T06:38:52.810 に答える