使用实体框架有效地持久化日历数据



我正在做一个涉及管理驾驶教练日程表的学校项目。

应用程序存储教师可用的时间段。

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

它还以类似的方式存储该讲师的个人约会。

当客户说,例如,"我想要一个2小时的课程",我必须获取所有讲师的可用期和预约,以便计算他们的"实际可用性",然后找到在他/她的时间表中有超过2小时空闲时间的人。

有更好的方法吗?

我的问题几乎是时间日历数据结构的精确副本,我知道它。但是,嗯…我们在2011年,我对实体框架特定的信息感兴趣,或者至少是关于使用对象关系映射做这件事的事情:-)

我编写了一个类似的调度应用程序,最终采用了一种稍微不同的方法(尽管您的方法肯定可以工作)。

在该系统中,时间表被分解为15分钟的增量,称为块,并存储在一个表中。除非他们特别要求休假,否则每个人都是有空的。这些休假请求存储在一个单独的表中,同样以15分钟为单位。

我们有一个ScheduleBlock表,它基本上存储了基于业务规则填充的所有潜在块,还有一个ScheduleException表,它存储了用户无法工作的块。

使用这个表结构,很容易创建一个UI,显示所有ScheduleBlock实体(这是所有潜在的可用时间,即营业时间),然后额外绑定所有ScheduleException实体(约会、PTO、病假等),以显示用户不能工作的时间(每个用户的颜色编码)。从那里,系统的用户可以选择他们想要安排特定事件的时间块,类似于MS Outlook的工作方式。

当我们执行自动调度时,就像在您的案例中一样,我们查询在指定日期范围内具有X个可用块的用户,根据他们拥有的约会数量进行排序,并循环查找匹配。我们按照预约的数量进行排序,以便安排时间最充裕的人排在第一位。

希望这对你有帮助!

最新更新