NHibernate: сопоставление свойства типа IList <DateTime> - PullRequest
0 голосов
/ 28 июля 2010

Используя NHibernate, есть ли быстрый способ отобразить следующий класс:

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 }

1 Ответ

2 голосов
/ 28 июля 2010

Быстрая?Я думаю так.Создайте класс 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);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...