我可以告訴NHibernate將我的一對多關係映射到List類型的屬性,而不是接口IList?如何告訴NHibernate將一對多關係映射到列表<T>而不是IList <T>?
我知道NHibernate使用它自己的IList實現進行延遲加載,但我不需要這個功能。相反,我需要一個可序列化的類,這是我無法通過使用IList接口而不是具體的List-class來完成的。
我可以告訴NHibernate將我的一對多關係映射到List類型的屬性,而不是接口IList?如何告訴NHibernate將一對多關係映射到列表<T>而不是IList <T>?
我知道NHibernate使用它自己的IList實現進行延遲加載,但我不需要這個功能。相反,我需要一個可序列化的類,這是我無法通過使用IList接口而不是具體的List-class來完成的。
簡單的答案是否定的,你不能告訴NHibernate使用List<T>
。這earlier question更詳細地討論它。
best article我可以在序列化NHibernate對象上找到針對WCF用戶的對象。
如果你確實需要這樣做,你唯一的選擇就是改變你的序列化策略。
您可以在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...
}