Ответ 1
Если вы храните дату в отдельном объекте, вы можете получить только даты и отсортировать их самостоятельно, как вам нравится. У вас были бы отношения от Event to EventDate и соответствующие обратные отношения, которые позволят вам найти событие из данного EventDate.
Предложение: укажите дескриптор сортировки в запросе выборки, чтобы получить даты, отсортированные с начала года. Затем все, что вам нужно сделать, это найти текущую дату в возвращаемом массиве и переместить все до этой точки в конец массива.
Сопоставьте событие EventDate- > Event со многими, поскольку может случиться, что на одну дату выпадает более одного события. Настройка вашей модели таким образом дает вам приятное свойство, на которое вы можете легко ответить на вопрос "Какие события происходят в дату X?"