2010-07-28 27 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); 
     } 
    } 
}