2010-07-28 45 views
0

的财产使用NHibernate,是有一个快速的方法来映射下面的类:NHibernate的:地图类型的IList <DateTime>

public class Office 
{ 
    public virtual Guid Id { get; set; } 
    public virtual IList<DateTime> Holidays { get; set; } 
} 

...到表:

table Office { Guid Id } 
table OfficeHolidays { Guid OfficeId, DateTime Holiday } 

回答

2

快速?我想是这样。创建一个OfficeHoliday类并将其映射为Office中的一对多,将该集合映射为Office中的私有成员。然后公开Holidays属性和方法来维护它。

public class Office 
{ 
    private IList<OfficeHoliday> _officeHolidays; 

    public virtual Guid Id { get; set; } 

    public IEnumerable<DateTime> Holidays 
    { 
     get { return _officeHolidays.Select(x => x.Holiday); } 
    } 

    public void AddHoliday(DateTime holiday) 
    { 
     // should check if it already exists first... 
     var newHoliday = new OfficeHoliday(this, holiday.Date); 
     _officeHolidays.Add(newHoliday); 
    } 

    public void RemoveHoliday(DateTime holiday) 
    { 
     var removeHoliday = _officeHolidays.FirstOrDefault(x => x.Holiday == holiday.Date); 
     if (removeHoliday != null) 
     { 
      _officeHolidays.Remove(removeHoliday); 
     } 
    } 
}