Несколько других простых ошибок, с которыми я столкнулся:
1 - удаление элементов из коллекции при выполнении итерации по ней с помощью foreach (хотя это вызывает исключение, поэтому, если он не найден, вы, вероятно, заметите это без использования отладчика):
foreach (LayoutVersion lv in this.LayoutVersions)
{
if (lv.EndDate <= endDate && lv.StartDate >= endDate)
{ //subsume this lv
this.LayoutVersions.Remove(lv);
}
}
2 - DateTime.AddMinutes или AddHours без присвоения результата:
public Report Create(Area area, DateTime date, Shift shift)
{
DateTime startDate = new DateTime(date.Year, date.Month, date.Day);
startDate.AddHours(shift.Time.Hour);
startDate.AddMinutes(shift.Time.Minute);
return Persistence.DataManager.CreateReport(area, startDate);
}