我有一个从数据库加载配置的对象。我使用datetime字段(名为GroupsLastRun)存储作业的最后运行时间,并使用名为Captureusersandgroups的字符串字段存储作业运行的频率。Captureusersandgroups存储了三种不同的类型“每日”、“每周”和“每月”。
基本上,我有一个循环应该只在作业即将运行时才会继续。到目前为止,我已经谈到了以下几点:
if (configEntity.GroupsLastrun > DateTime.Now.AddDays(-1) && configEntity.Captureusersandgroups == "DAILY") continue;
if (configEntity.GroupsLastrun > DateTime.Now.AddDays(-7) && configEntity.Captureusersandgroups == "WEEKLY") continue;
if (configEntity.GroupsLastrun > DateTime.Now.AddDays(-30) && configEntity.Captureusersandgroups == "MONTHLY") continue;我确信(肯定)有更好的方法来解决这一问题,但作为一名SQL Server开发人员,我主要缺乏批判性思维/工具来实现这一点。什么是更好的方法,或者我应该学习什么,这样我才能更好地思考这个问题?
发布于 2013-04-10 14:16:05
作为另一种方法,您可以将运行周期存储在enum中,如下所示:
enum RunPeriod
{
Daily = 1,
Weekly = 7,
Monthly = 30
}然后,您可以在数据库中存储int值,而不是string。这允许您在数据库端进行过滤,例如:
var configsToRun =
from c in _myContext.Configs
where EntityFunctions.AddDays(c.LastRun,(int)c.RunPeriod) > DateTime.Now);https://stackoverflow.com/questions/15917757
复制相似问题