NHibernate - 它是否适用于外键约束的数据库级别级联删除

5 c# sql-server nhibernate

剂量nHibernate与数据库级别级联删除相配合吗?我的意思是,如果我在RDBMS级别设置约束以级联删除所有孤立,如果我要通过nHibernate删除实体,nHibernate会在应用程序级调用任何自定义删除逻辑吗?或者我应该从RDBMS级别删除级联删除,只是通过定义该行为的配置来使用nHibernate本身的级联删除功能?

谢谢

Dou*_*oug 4

NHibernate只是将您的RDBMS视为数据存储.在大多数情况下,这意味着您可以让NHibernate为您完成工作.

让NHibernate进行级联删除. 这样,您可以保持逻辑和控制它所属的位置(在您的应用程序中),而不是在您的应用程序几乎无法控制或灵活的数据库中.

编辑:

使用NHibernate时,ON DELETE CASCADE并不总是表现出色.您必须非常小心集合关联的级联设置是什么.请参阅此文章:http: //eddii.wordpress.com/2006/11/16/hibernate-on-deletecascade-performance/

除非性能对你来说是一个大问题,否则让NHibernate完成工作通常会更清晰,更少问题.Jamie Ide正确地指出:

与触发器一样,NHibernate不会知道对象的数据库表示由于数据库操作而发生了变化.在大多数情况下,我会避免使用它们.