2010-03-23 49 views
0

实体映射中的NHibernate级联设置是静态的。无论如何要动态地禁用代码中的“级联”设置,以避免在大量数据事务期间在NHiberate中进行昂贵的级联操作?我们不希望使用存储过程或本机SQL,因为我们需要让NHibernate(审计)捕获实体更改。如何动态破坏NHibernation级联

回答

0

无法动态禁用级联。可以使用StatelessSession

但是,如果你有时不需要需要级联的特定关系,只是不要设置它。级联是一个很好的功能,但它不是要求使事情工作。

+0

感谢您的建议建立一个新的SessionFactory,但StatelessSession绕过这将禁用审计功能的拦截器。 – 2010-03-24 00:40:56

0

您可以使用映射和拦截,但改变映射禁用级联

var config = BuildConfiguration(); 
var classmapping = config.GetClassMapping("myentity"); 
classmapping.GetProperty("myprop").Cascade = "none"; 

var bulkinsertSf = config.BuildSessionFactory();