代码之家  ›  专栏  ›  技术社区  ›  Oliver Hanappi

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

  •  2
  • Oliver Hanappi  · 技术社区  · 16 年前

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

    2 回复  |  直到 13 年前
        1
  •  1
  •   Community Mohan Dere    8 年前

    简单的答案是不,你不能告诉NHibernate使用 List<T> .这个 earlier question

    best article 我可以发现,序列化NHibernate对象是针对WCF用户的。

        2
  •  0
  •   Nigel    16 年前

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

    您可以在System中使用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...
    }