代码之家  ›  专栏  ›  技术社区  ›  Gareth

无外键的NHibernate映射集合

  •  2
  • Gareth  · 技术社区  · 16 年前

    我有一个叫做WorkingDays的类,这个类需要一个日期集合,这些日期是银行假日的日期。在我们的数据库中,我们有一个包含这些日期的表-我希望nhibernate获得所有这些日期并填充bankHolidays集合。

    但问题是,我没有一个表来表示数据库中的链接—当所有工作日impl都有完全相同的银行假日日期列表时,这似乎真的没有必要。

    那么我如何在不需要添加外键的情况下映射它呢?我希望下面的代码可以更好地说明:

    public class WorkingDays : Interval
    {
       public ICollection<DateTime> BankHolidays
       {
           get;
           private set;
       }
    }
    
    3 回复  |  直到 8 年前
        1
  •  1
  •   DanP    16 年前

    您需要将其作为实体本身的集合,这有什么原因吗?为什么不让一个单独的存储库/DAO负责访问这个集合?如果数据是相当静态的,那么使用二级缓存也可以获得相当多的收益。

        2
  •  1
  •   JulianM    16 年前

    如果只需要只读集合,可以尝试以下操作:

    <property name="BankHolidays" type="DateTime[]" formula="(SELECT Date FROM BankHolidays)" update="false" insert="false" />
    
        3
  •  0
  •   Community Mohan Dere    9 年前

    我有一个 similar question

    我认为你不能强迫NHibernate映射那些与数据库中的父对象没有某种关系的子对象。它是一个 关系 制图器 毕竟。

    解决方案是通过数据库暗示一种关系。创建一个链接工作日和银行假日的视图。然后添加HasMany(x=>x、 银行假日)到您的工作日映射。

    推荐文章