0

我一直在 nhibernate 中使用该技术,如果我保存父类对象,则与其相关的子类对象将被保存。如果我从集合中删除任何对象,它们也会从数据库中删除。

但最近我修改了我的代码以禁用延迟加载,从那时起递归保存不起作用。

谁能告诉我我错过了什么。我试图搜索,但我发现的解决方案确实对我有用。

我有类似于下面的域类

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();
    }
}
4

1 回答 1

0

如果你正在做类似的事情

parent.Remove(child);
session.SaveOrUpdate(parent);
session.Flush()

您的映射需要:

HasMany(x => x.Class2Seq)
            .KeyColumn("Class1Id")
            .Not.LazyLoad()
            .Inverse()
            .Cascade.AllDeleteOrphan();
于 2013-07-02T09:16:55.480 回答