没有外键的NHibernate映射集合

问题描述 投票:2回答:3

我有一个名为WorkingDays的课程,这个课程需要一组日期,这些日期是银行假期的日期。在我们的数据库中,我们有一个包含这些日期的表 - 我希望nhibernate获取所有这些日期并填充bankHolidays集合。

但是我没有一个代表数据库中链接的表 - 当所有的工作日推出时,它似乎没有必要具有完全相同的银行假日日期列表。

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

public class WorkingDays : Interval
{
   public ICollection<DateTime> BankHolidays
   {
       get;
       private set;
   }
}
nhibernate nhibernate-mapping
3个回答
1
投票

您是否有理由将此作为实体本身的集合?为什么没有单独的存储库/ DAO负责访问此集合?如果数据是相当静态的,那么通过使用二级缓存也可能获得相当多的收益。


1
投票

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

<property name="BankHolidays" type="DateTime[]" formula="(SELECT Date FROM BankHolidays)" update="false" insert="false" />

0
投票

我有一个similar question,并认为我将来会帮助其他人。

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

解决方案是通过数据库暗示关系。创建一个将WorkingDays与BankHolidays链接的视图。然后将HasMany(x => x.BankHolidays)添加到您的WorkingDays映射中。

© www.soinside.com 2019 - 2024. All rights reserved.