2010-03-23 48 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();