0

親クラスオブジェクトを保存すると、それに関連する子クラスオブジェクトが保存されます。コレクションからオブジェクトを削除すると、データベースからも削除されます。

しかし最近、遅延読み込みを無効にするようにコードを変更しました。それ以来、再帰的な保存は機能しません。

何が欠けているのか誰か教えてください。私は検索しようとしましたが、見つけた解決策は本当にうまくいきました。

以下のようなドメインクラスがあります

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 に答える