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 是假值,这个子对象仍在我的数据库中。

4

2 回答 2

0

不是 100% 确定,但可能是因为您已将 ProductID 定义为 ProductPicture 的属性,我假设这是 Product 类的 PK。您不需要再次添加它,它将由关系创建。

于 2012-06-25T21:13:37.327 回答
0

我不确定您table="[ProductPicture]"在 set 标签中的使用是否正确。

一对多标签已经建立了 ProductPictureList 和 ProductPicture 之间的链接。我认为 table 属性通常用于在建模多对可能关系时使用单独的关系表。

来自 nhibernate.info文档

表(可选 - 默认为属性名称)集合表的名称(不用于一对多关联)

并且

任何值集合和对映射为多对多关联的其他实体的任何引用集合都需要集合表

于 2012-06-26T06:38:52.810 回答