如何告诉NHibernate将一对多关系映射到列表<;T>;而不是IList<;T>;?

如何告诉NHibernate将一对多关系映射到列表<;T>;而不是IList<;T>;?,nhibernate,one-to-many,Nhibernate,One To Many,我是否可以告诉NHibernate将我的一对多关系映射到一个类型为List而不是接口IList的属性 我知道NHibernate使用自己的IList实现进行延迟加载,但我不需要这个特性。相反,我需要一个可序列化的类,我无法通过使用IList接口而不是具体的List类来实现这一点。简单的答案是否定的,你不能告诉NHibernate使用List。本文将对此进行更详细的讨论 我能找到的关于序列化NHibernate对象的方法是针对WCF用户的。如果您真的需要这样做,您唯一真正的选择就是更改序列化策略

我是否可以告诉NHibernate将我的一对多关系映射到一个类型为List而不是接口IList的属性


我知道NHibernate使用自己的IList实现进行延迟加载,但我不需要这个特性。相反,我需要一个可序列化的类,我无法通过使用IList接口而不是具体的List类来实现这一点。

简单的答案是否定的,你不能告诉NHibernate使用
List
。本文将对此进行更详细的讨论


我能找到的关于序列化NHibernate对象的方法是针对WCF用户的。

如果您真的需要这样做,您唯一真正的选择就是更改序列化策略

您可以在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...
}
//NHibernate属性
公共虚拟IList实体
{
得到;
设置
}
//序列化属性
公开名单
{
得到;
设置
}
[正在序列化]
void DoStuff(StreamingContext上下文)
{
SerializedEntities=//要序列化的任何内容。。。
}