2

IList インターフェイスではなく、List 型のプロパティに 1 対多の関係をマップするように NHibernate に指示することはできますか?

NHibernate が独自の IList 実装を遅延読み込みに使用していることは知っていますが、この機能は必要ありません。代わりに、シリアライズ可能なクラスが必要ですが、具体的な List クラスの代わりに IList インターフェイスを使用しても実現できません。

4

2 に答える 2

1

簡単な答えはノーです。NHibernate に を使用するように指示することはできませんList<T>。この以前の質問では、それについて詳しく説明しています。

NHibernate オブジェクトのシリアル化に関して私が見つけた最良の記事は、WCF ユーザーを対象としています

于 2009-07-06T12:30:20.470 に答える
0

本当にこれを行う必要がある場合、唯一の現実的なオプションは、シリアライゼーション戦略を変更することです。

標準の Serialization 属性ではなく、System.Runtime.Serialization で DataContract 属性を使用できます。これにより、インターフェイスのシリアル化がサポートされます。

標準のシリアル化を使用する必要がある場合は、シリアル化する値を格納するために別のプロパティを使用し、シリアル化で値を入力するだけです。

//NHibernate property
public virtual IList<Entity> Entities
{
    get;
    set;
}

//Serialized property
public List<Entity> SerializedEntities
{
    get;
    set;
}

[OnSerializing]
void DoStuff(StreamingContext context)
{
    SerializedEntities = // Whatever you want to serialize...
}
于 2009-07-06T13:01:18.777 に答える