作者InitialPower (InitialPower)
看板C_Sharp
标题[问题] 如何有效率的储存Todo的Repeat资料
时间Fri Apr 1 11:26:39 2016
各位高手好 目前在作的程式码碰到一个问题
在实作类似行事历中的 重复功能 的时候
要如何有效率的储存所有状况 以及 保留SQL搜寻的弹性
重复的状况大致上有以下的类型
http://imgur.com/a/exD7T
1.每天重复一次
2.每周重复一次~数次, 使用者可自定
3.每月重复一次~数次, 使用者可自定
4.每年重复一次
5.其他状况
下载了几个Open Source的原始码来参考, 不过似乎都没有做到这部分
使用的框架为C# + ASP.Net MVC + Entity Framework
不知有没有人可以提供建议, 先谢过了
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.235.169
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1459481201.A.D72.html
1F:推 O187: 用内建排程的api 04/01 12:29
2F:→ InitialPower: 感谢你的回应 你指的是类似Handfire之类的函数库吧 04/01 14:06
3F:→ InitialPower: 我的需求是储存任务重复的各种可能性 而且会是多人 04/01 14:08
4F:→ InitialPower: 使用 所以那种函数库似乎不太适合 04/01 14:08
5F:→ Litfal: 原PO的问题是,如何用同样的资料库结构去存那些触发与循环 04/01 21:46
6F:→ Litfal: 设定。 04/01 21:46
7F:→ Litfal: 不过你是为何要搜寻呢? 04/01 21:54
8F:→ InitialPower: 这部份我是需要设计成 每日开始时搜寻当日会触发的 04/02 01:32
9F:→ InitialPower: 任务 并自动产生一个子任务 因此需要搜寻的功能 04/02 01:33
10F:→ Litfal: 我觉得,建立/修改设定或任务进行後,就去算下次触发时间 04/02 05:43
11F:→ Litfal: 把这个触发时间与关联任务/工作加入另一个表 04/02 05:44
12F:→ Litfal: 这个触发表就很单纯,筛选就很简单。 04/02 05:45
13F:→ Litfal: 而原本的设定表就可以保留复杂度与未来扩充性。 04/02 05:47
14F:→ Litfal: 不管怎麽样的设定,都实作把工作和下次触发时间丢到触发表 04/02 05:48
15F:→ ssccg: 用规则来描述触发时间、可以对规则资料搜寻某天会触发的 04/03 04:10
16F:→ ssccg: 这两项是不能同时达成的,如楼上所说要分成规则跟触发日期 04/03 04:10
17F:→ ssccg: 不过你说的每日搜寻当日会触发的这个作法我是觉得很奇怪 04/03 04:12
18F:→ ssccg: 通常排程作法都是启动时照规则算出下一次触发时间,排进工 04/03 04:13
19F:→ ssccg: 作表,下一次执行时再算下下一次的时间,没有在要执行时去 04/03 04:13
20F:→ ssccg: 对规则做搜寻的 04/03 04:14
21F:→ ssccg: 至於储存规则的方式,就cron expression看起来很够用 04/03 04:16
22F:→ InitialPower: 感谢楼上两位的回答 cron expression 看来是个不错 04/06 13:37
23F:→ InitialPower: 的选择 04/06 13:37