在删除上下文中,删除带子收藏的父母时我想知道为什么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 ..我们可以...