如何在C#/ SQL Server中跟踪重复的日历事件?
我想在应用程序的日期/时间显示上显示重复事件。 此日期时间显示可以采用日历的forms,但它也可以只是即将发生的事件的列表。
处理可以重复的事件的最佳方法是什么?
例如:事件是否应该在数据库中存储一次并在显示代码中多次投影/重复? 该事件应该存储多次,然后才会被渲染?
之前我做了类似的事情,我的架构基于SQL Servers sysschedules表。
http://technet.microsoft.com/en-us/library/ms178644.aspx
上面链接的模式允许您存储作业(事件)的计划。 然后,您可以根据计划计算事件发生的日期。 这可能是一个冗长的计算,所以我会尝试在某处缓存该结果。
我不确定我是否从这个网站获得此链接。 无论如何,Martin Fowler不久前在他的网站上讨论了这个问题。
我认为这取决于事件的类型。 它是否像圣诞节一样,一旦它出现并发生在下一次发生之前你真的对它不感兴趣? 或者这是一项任务,比如“确保我每个月都给妈妈打电话”,如果它发生了,你错过了它,你会不会想要它消失?
我最近实现后者的一种方法是拥有具有next_occurrence(date),reoccurence_period(每周,每月,每年等)列的记录。 因此,当下一个出现时,它将显示在列表中。 一旦它通过列表项将有一个回收图标,一旦按下将更新记录到下一个未来发生。
再说一遍,我不确定这是否适用于你的情况,但它对我来说效果很好。