NHibernate一对多删除不级联
我有一个'Photo'课程和一个'Comment'课程。照片可以分配多个注释。
我在HBM映射文件中将其配置为一对多关系,并对Photo.hbm.xml映射文件中的“注释”包设置了cascade =“all-delete-orphan”。
但是,如果我尝试删除与其关联的一条或多条评论的照片,我会收到'DELETE语句与REFERENCE约束冲突“FK_Comments_Photos”'
我在Photo.hbm.xml中针对Comments包尝试了几个其他级联选项,但无论我将其设置为什么,我每次都得到相同的结果。我只是希望能够删除照片并自动删除任何相关的评论。
这是我的照片映射(为简洁起见编辑):
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" .... 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" cascade="all-delete-orphan" order-by="DateTimePosted desc" where="Approved=1">
<key column="PhotoId" />
<one-to-many class="Comment" />
</bag>
</class>
这是我的评论映射(为简洁起见编辑):
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" ... 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="Author" not-null="true" />
<property name="Body" not-null="true" />
<property name="Approved" not-null="true" />
<many-to-one name="Photo" not-null="true">
<column name="PhotoId" />
</many-to-one>
</class>
当我尝试删除与其相关的评论的照片时,有没有人有任何关于为什么没有发生级联的建议?
更新:我可以让级联发生的唯一方法是在SQL Server中配置“删除规则”,将此关系配置为“级联”,这样做意味着我不需要在我的NHibernate中指定任何级联操作映射。但是,这对我来说并不理想 - 我希望能够在NHibernate Mapping中理想地配置级联行为,所以我仍然感到困惑,为什么它似乎没有注意到我的NHibernate级联设置?
没有找到相关结果
已邀请:
4 个回复
土投
烷刨画颠离
。
吠强祷豪硅
畦桨存灯
你可能应该反过来。然后我想知道你的FK_Comments_Photos列在哪里指定。