我可以以某种方式告诉 NHibernate 将我的一对多关系映射到 List 类型的属性而不是接口 IList 吗?
我知道 NHibernate 使用它自己的 IList 实现来延迟加载,但我不需要这个功能。相反,我需要一个可序列化的类,而我无法通过使用 IList 接口而不是具体的 List 类来完成。
我可以以某种方式告诉 NHibernate 将我的一对多关系映射到 List 类型的属性而不是接口 IList 吗?
我知道 NHibernate 使用它自己的 IList 实现来延迟加载,但我不需要这个功能。相反,我需要一个可序列化的类,而我无法通过使用 IList 接口而不是具体的 List 类来完成。
如果你真的需要这样做,你唯一真正的选择是改变你的序列化策略。
您可以在 System.Runtime.Serialization 中使用 DataContract 属性,而不是使用标准的 Serialization 属性。这将支持接口的序列化。
如果您需要使用标准序列化,那么您可以使用单独的属性来存储您希望被序列化的值,并在序列化时简单地填充它:
//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...
}