Fluent NHibernate マッピングを使用してデータをシリアル化/逆シリアル化しようとしています。
「ルート」エンティティから始めて、マッピングを使用して、そのエンティティにリンクされたすべてのエンティティを含むグラフを作成します。次に、この一連のエンティティをシリアル化します。
私はこのマッピングを持っています(関連部分のみ):
[Serializable]
public class Foo
{
public virtual IList<Bar> Bars { get; set;}
public virtual IList<System.Guid> Guids { get; set; }
}
[Serializable]
public class Bar
{
public virtual Foo Foo { get; set; }
}
public class BarMap : ClassMap<Bar>
{
References(x => x.Foo, "idFoo").Not.Nullable();
}
public class FooMap : ClassMap<Foo>
{
HasMany(x => x.Bars).KeyColumn("idFoo");
HasMany(x => x.Guids).Table("guids").KeyColumn("idFoo").Element("guid").AsBag().Not.LazyLoad();
}
Foo と Bar のシリアル化と逆シリアル化では、すべてが正しく機能します。しかし、逆シリアル化されたデータを DB に永続化しようとすると、Guids
そのデータは Foo オブジェクトにありますが、リストは永続化されません。
しばらくグーグルで調べましたが、役立つものは何も見つかりませんでした。私も試してみましたInverse
が、無駄でした。私も試してみましたがCascade.SaveUpdate()
、これもうまくいきませんでした。
Element
値をsとして格納するために追加のテーブルを使用しているためですか? それが、私が考えることができるこのリストの唯一の特異性です.
この復元が機能しない原因は何ですか?
どんなアイデアでも大歓迎です。ありがとう。
編集:
Guids リストは正しくシリアル化および逆シリアル化されます。行われていない唯一のことは、GUID リストの DB 挿入ですが、これは逆シリアル化されたデータに存在します。
編集2:
奇妙な点は、プロジェクトの他の場所にある別のコードが同じことを行い、今回は成功していることです。したがって、両側で異なる NHibernate 構成パラメーターが曖昧である可能性がありますが、mainNH.xml.config は毎回同じファイルです。