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

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

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

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

    2 回复  |  直到 12 年前
        1
  •  1
  •   Community CDub    8 年前

    答案很简单:不,你不能告诉NHibernate使用 List<T> earlier question 更详细地讨论它。

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

        2
  •  0
  •   Nigel    15 年前

    您可以在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...
    }