如何告诉NHibernate的映射一个一对多的关系,为List ,而不是IList的

StackOverflow https://stackoverflow.com/questions/1086333

  •  23-08-2019
  •  | 
  •  

我可以以某种方式告诉NHibernate的我的一个一对多的关系映射到这类型的列表,而不是接口的IList的财产?

我知道NHibernate的使用自己的IList的实现了延迟加载,但我并不需要这个功能。相反,我需要一类是可序列化,我无法通过使用IList接口,而不是具体的列表级完成。

有帮助吗?

解决方案

在简单的答案是否定的,你不能告诉NHibernate的使用List<T>。此早期问题讨论它的更多细节。

最好文章我能找到的序列化对象的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...
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top