如何在C#/ SQL Server中跟踪重复的日历事件?

我想在应用程序的日期/时间显示上显示重复事件。 此日期时间显示可以采用日历的forms,但它也可以只是即将发生的事件的列表。

处理可以重复的事件的最佳方法是什么?

例如:事件是否应该在数据库中存储一次并在显示代码中多次投影/重复? 该事件应该存储多次,然后才会被渲染?

之前我做了类似的事情,我的架构基于SQL Servers sysschedules表。

http://technet.microsoft.com/en-us/library/ms178644.aspx

上面链接的模式允许您存储作业(事件)的计划。 然后,您可以根据计划计算事件发生的日期。 这可能是一个冗长的计算,所以我会尝试在某处缓存该结果。

我不确定我是否从这个网站获得此链接。 无论如何,Martin Fowler不久前在他的网站上讨论了这个问题。

http://martinfowler.com/apsupp/recurring.pdf

我认为这取决于事件的类型。 它是否像圣诞节一样,一旦它出现并发生在下一次发生之前你真的对它不感兴趣? 或者这是一项任务,比如“确保我每个月都给妈妈打电话”,如果它发生了,你错过了它,你会不会想要它消失?

我最近实现后者的一种方法是拥有具有next_occurrence(date),reoccurence_period(每周,每月,每年等)列的记录。 因此,当下一个出现时,它将显示在列表中。 一旦它通过列表项将有一个回收图标,一旦按下将更新记录到下一个未来发生。

再说一遍,我不确定这是否适用于你的情况,但它对我来说效果很好。