场景:
但是儿童收藏品不会删除!
FactorDocDetail Map:
References(x => x.FactorDoc)
.Not.Nullable();
FactorDoc Map:
HasMany(x => x.FactorDocDetails)
.AsBag()
.Not.KeyNullable()
.Inverse()
.Cascade.AllDeleteOrphan();
更新FactorDoc
//Create a new session
FactorDoc doc = _assembler.FromModel(command.FactorDoc);
foreach (var item in doc.FactorDocDetails)
{
item.FactorDoc = null;
}
doc.FactorDocDetails.Clear();
_repository.Update(doc);
//Flush and commit
FactorDocDetails在db
中仍然存在答案 0 :(得分:0)
花了三天时间,我尝试了所有可能的事情,最后它起作用了!
_repository.Get(command.FactorDoc.Id);
FactorDoc doc = _assembler.FromModel(command.FactorDoc);
_repository.Merge(doc);
答案 1 :(得分:-1)
确保您正在刷新会话,并且您也不需要将foreach设置为null的foreach循环。我个人而不是刷新会话而不是在事务中执行语句:
using (NHibernate.ISession session = SessionFactory.GetCurrentSession())
{
using (NHibernate.ITransaction tran = session.BeginTransaction())
{
doc.FactorDocDetails.Clear();
tran.Commit();
}
}
还很难说出_repository.Update(doc)实际上在做什么。