У меня есть следующий файл сопоставления для объектов «Фото» (отредактировано для краткости):
<hibernate-mapping ... default-access="property" default-cascade="none" default-lazy="true">
<class xmlns="urn:nhibernate-mapping-2.2" name="Photo" table="Photos">
<id name="PhotoId" unsaved-value="0">
<column name="PhotoId" />
<generator class="native" />
</id>
...
<bag name="Comments" table="Comments" lazy="false" order-by="DateTimePosted desc" cascade="all-delete-orphan" inverse="true">
<key column="PhotoId" />
<one-to-many class="Comment" />
</bag>
</class>
Я хочу применить предложение Where к сумке «Комментарии» только кполучить комментарии со свойством Approved = true.Однако, когда у меня это было на месте, я столкнулся с проблемным сценарием, в котором удаленные объекты Photo не каскадно удаляли неутвержденные комментарии (и оставляли записи с потерянными комментариями), поскольку это не соответствовало условию условия where!По сути, я хотел, чтобы условие where было присоединено к EXCEPT для каскадного удаления, и в этом случае я ВСЕГДА хотел, чтобы любые комментарии, связанные с фотографией, были удалены при удалении фотографии.копия файла сопоставления моих комментариев:
<hibernate-mapping ... default-access="property" default-cascade="none" default-lazy="true">
<class xmlns="urn:nhibernate-mapping-2.2" name="Comment" table="Comments">
<id name="CommentId" unsaved-value="0">
<column name="CommentId"></column>
<generator class="native" />
</id>
<property name="DateTimePosted" not-null="true" />
...
<property name="Approved" not-null="true" />
<many-to-one name="Photo">
<column name="PhotoId" />
</many-to-one>
</class>
Как мне обойти это?