Эффективно ли сохраняются данные календаря с Entity Framework? - PullRequest
1 голос
/ 11 апреля 2011

Я работаю над школьным проектом, который включает управление календарями инструкторов по вождению.

Приложение хранит периоды времени, в течение которых инструктор доступен.

public partial class AvailabilityPeriod // kind of pseudo code
{
  Instructor instructor;
  DateTime start;
  DateTime end;
}

В нем также хранятся отдельныеназначения для этого инструктора аналогичным образом.

Когда клиент говорит, например, «Я хочу 2-часовой урок», я должен выбрать периоды доступности и назначения всех инструкторов, чтобы вычислить их«фактическая доступность», а затем найдите кого-то, имеющего более 2 часов бесплатного в своем графике.

Есть ли лучший способ?

Мой вопрос - почти точная копия Структура данных календаря времени , и я знаю это.Но, хорошо ... Мы находимся в 2011 году, и меня интересует информация, специфичная для Entity Framework, или, по крайней мере, кое-что о выполнении этого реляционного отображения объектов: -)

1 Ответ

1 голос
/ 11 апреля 2011

Я написал подобное приложение для планирования, и в итоге я выбрал немного другой подход (хотя ваш подход, безусловно, будет работать).

В этой системе расписание разбивалось на 15-минутные приращения, называлось блоками и сохранялось в таблице. Все были всегда доступны, если они специально не просили выходного. Эти запросы на отключение были сохранены в отдельной таблице, опять-таки с шагом 15 минут.

У нас была таблица ScheduleBlock, в которой в основном хранились все потенциальные блоки, заполненные на основе бизнес-правил, и таблица ScheduleException, в которой хранились блоки, которые пользователи не могли работать.

С этой структурой таблицы было легко создать пользовательский интерфейс, который отображал бы все объекты ScheduleBlock (это все потенциальное доступное время, т.е. рабочие часы), а затем дополнительно связывал все объекты ScheduleException (встречи, PTO). , больничные дни и т. д.), чтобы показать время, когда пользователи не могли работать (цветовая маркировка для каждого пользователя). Оттуда пользователь системы может выбирать блоки времени, которые он хотел запланировать для своего конкретного события, подобно тому, как работает MS Outlook.

Когда мы делали автоматическое планирование, как в вашем случае, мы запрашивали пользователей, у которых есть номер блока X, доступный для указанного диапазона дат, сортировали по количеству встреч, которые они имели, и просматривали их в поисках совпадения. Мы отсортировали по количеству встреч, чтобы человек с наиболее открытым расписанием был назначен первым.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...