NHIBERNATE有效的级联删除



在删除上下文中,删除带子收藏的父母时我想知道为什么NHIBERNATE逐行删除delete for Children(on Child Pk)

DELETE FROM children where Id=1
DELETE FROM children where Id=2
...    
DELETE FROM parent where id=1

为什么nhibernate不能做

DELETE FROM children where parentId=1
DELETE FROM parent where id=1

例如,如果父母有100k子女,它将更有效。我在许多主题中搜索而没有找到正确的Anwser。我也做了一些测试,但成功一个想法?

这是一种情况,我们可以使用Nhibernate的可扩展性点。文档

19.3。自定义SQL用于创建,更新和删除

nhibrenate可以使用自定义SQL语句进行创建,更新和 删除操作。班级和收集持久性 已经包含一组配置时间生成的字符串 (Insertsql,DeletesQL,UpdatesQL等)。映射标签<sql-insert><sql-delete><sql-update>覆盖以下字符串:

<class name="Person">
    <id name="id">
        <generator class="increment"/>
    </id>
    <property name="name" not-null="true"/>
    <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-insert>
    <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>
    <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>
</class>

因此,如果标准删除没有用,我们可以提供自己的过程,包括一些存储过程

<sql-delete>exec deletePerson ?</sql-delete>

总结,在大多数情况下,标准模型正常且有效。如果我们需要改进SQL ..我们可以...

相关内容

  • 没有找到相关文章

最新更新