如何动态打破NHibernation级联

时间:2010-03-23 12:20:49

标签: nhibernate

实体映射中的NHibernate级联设置是静态的。反正是否有动态禁用代码中的“级联”设置,以避免在庞大的数据事务期间NHiberate中的昂贵级联操作?我们不想使用存储过程或本机SQL,因为我们需要让NHibernate捕获实体更改(审计)。

2 个答案:

答案 0 :(得分:0)

无法动态禁用级联。

您可以使用StatelessSession

但是,如果您有时需要在特定关系中进行级联,请不要设置它。 Cascade是一个很好的功能,但它不是必需来使事情有效。

答案 1 :(得分:0)

你可以使用你的映射和拦截器建立一个新的sessionfactory但是改变映射以禁用级联

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

var bulkinsertSf = config.BuildSessionFactory();