复合关系中的NHibernate Stackoverflow异常
当试图从集合中删除复合对象时(但仅当我将其包装到事务中时),会出现stackoverflow异常。但是,在会话中获取对象并将其删除(而不是在集合中)以及保存父对象是可行的 代码如下所示:复合关系中的NHibernate Stackoverflow异常,nhibernate,transactions,fluent-nhibernate,stack-overflow,Nhibernate,Transactions,Fluent Nhibernate,Stack Overflow,当试图从集合中删除复合对象时(但仅当我将其包装到事务中时),会出现stackoverflow异常。但是,在会话中获取对象并将其删除(而不是在集合中)以及保存父对象是可行的 代码如下所示: using (var session = sessionProvider.GetSession()) { using (var transaction = session.BeginTransaction()) {
using (var session = sessionProvider.GetSession())
{
using (var transaction = session.BeginTransaction())
{
var products = session.Query<MyObject>().Select(x => x.MyObjectId > 0).ToList();
//Would fail
var variant = session.Query<MyObject>().FirstOrDefault(x => x.Name == "some name that exists");
var parent = MyObject.Parent;
parent.RemoveMyObject(variant);
session.Save(parent);
//Doesn't fail
//session.Delete(variant);
transaction.Commit();
}
session.Flush();
}
HasMany(x => x.MyObject).AsSet().Cascade.AllDeleteOrphan().Inverse().KeyColumn("MyObjectId").BatchSize(2000);
References(x => x.MyObject).Column("MyObjectId");
我该怎么做才能解决这个问题?它应该在两方面都起作用。正如前面所说,只有在有交易的情况下才是这样。这两种方法都可以在没有事务的情况下工作
致意
莫顿