使用Entity Framework高效保存日历数据?

时间:2011-04-11 14:18:02

标签: .net entity-framework database-design orm performance

我正在开展一个涉及管理驾驶教练日历的学校项目。

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

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

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

当客户说“我想要一个2小时的课程”时,我必须获取所有教师的可用时段和任命,以便计算他们的“实际可用性”,然后找到一个超过2小时的人他/她的日程安排。

有更好的方法吗?

我的问题几乎完全与Time Calendar Data Structure重复,我知道。但是,嗯......我们在2011年,我对特定于实体框架的信息感兴趣,或者至少对这个对象关系映射做了一些事情: - )

1 个答案:

答案 0 :(得分:1)

我写了一个类似的调度应用程序,最后采用了一种不同的方法(尽管你的方法肯定会有用)。

在该系统中,计划被分解为15分钟的增量,称为块,并存储在表格中。除非他们特别要求休假,否则每个人都随时可用。这些休假请求存储在一个单独的表中,再次以15分钟为增量。

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

使用此表结构,可以轻松创建显示所有ScheduleBlock实体的UI(这是所有潜在的可用时间,即营业时间),然后另外绑定所有ScheduleException实体(约会,PTO) ,病假等)以显示用户无法工作的时间(按用户颜色编码)。从那里开始,系统用户可以选择他们想要安排特定事件的时间块,类似于MS Outlook的工作方式。

当我们进行自动调度时,就像你的情况一样,我们查询了具有指定日期范围的X数量块的用户,按照他们拥有的约会数量进行排序,并通过它们循环查找匹配项。我们按照约会的数量排序,以便首先安排时间表最开放的人。

希望这有帮助!