【问题标题】:How to tell NHibernate to map one-to-many relationship to List<T> and not IList<T>?如何告诉 NHibernate 将一对多关系映射到 List<T> 而不是 IList<T>?
【发布时间】:2009-07-06 10:14:38
【问题描述】:

我能否以某种方式告诉 NHibernate 将我的一对多关系映射到 List 类型而不是 IList 接口的属性?

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

【问题讨论】:

    标签: nhibernate one-to-many


    【解决方案1】:

    简单的答案是否定的,你不能告诉 NHibernate 使用List&lt;T&gt;earlier question 对此进行了更详细的讨论。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-26
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-03
        相关资源
        最近更新 更多