Я использую технику в nhibernate, где in, если я сохраняю объект родительского класса, связанные с ним объекты дочерних классов также сохранены. Если я удалю любой объект из коллекции, которую они также удалили из db.nhibernate lazy loading and recursive saving
Но недавно я изменил свой код, чтобы отключить ленивую загрузку, и с тех пор рекурсивное сохранение не работает.
Может ли кто-нибудь сказать мне, что это такое, что я не хватает. я пытался искать, но решения, которые я нашел, действительно работают для меня.
У меня есть класс домена, похожий на тот, ниже
public class Class1
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Class2> Class2Seq { get; set; }
}
public class Class2
{
public virtual long Id { get; set; }
public virtual string Name { get; set; }
public virtual Class1 Class1Ref{ get; set; }
}
Классы картографирования подобны этим
public class Class1Map: ClassMap<Class1>
{
public Class1Map()
{
Id(x => x.Id).GeneratedBy.Increment();
Map(x => x.Name);
HasMany(x => x.Class2Seq)
.KeyColumn("Class1Id")
.Not.LazyLoad()
.Inverse()
.Cascade.All();
}
}
public class Class2Map: ClassMap<Class2>
{
public Class2Map()
{
Id(x => x.Id).GeneratedBy.Increment();
Map(x => x.Name);
References(x => x.Class1Ref).Column("Class1Id").Not.LazyLoad();
}
}
ОК. но DeleteOrphan требуется для remove() ... без сохранения saveorupdate(), не так ли? –
Да, он должен, как и в parent.add (child) - до тех пор, пока вы установили child.parent –
Да, я установил child.parent, и, как я уже говорил, он отлично работал, пока я не отключил ленивую загрузку. –