我正在编写一个应用程序,需要根据一组规则限制下达订单的时间。我有两个问题,将规则存储在MSSQL表中的最佳方法是什么,以及验证Date对抗它们的最佳方法是什么?
例如。
我原来的计划是让一个表有4列,(开始时间,结束时间,单一规则/经常性规则)。
但是,我不知道如何考虑星期几与年份日期对绝对日期。
有什么想法吗?
答案 0 :(得分:2)
我解决这个问题的方法是有3个表(一年中的一天,一周中的一天和绝对日期),它覆盖DateConstraint,其中包含每个规则的开始/结束时间。
验证码相对简单。我在所有类中添加了Matches()例程。
public partial class DateConstraint
{
public virtual bool Matches()
{
return DateTime.Now.TimeOfDay.Ticks >= StartTime.Ticks && DateTime.Now.TimeOfDay.Ticks <= EndTime.Ticks;
}
}
public partial class DayOfWeekConstraint : DateConstraint
{
public override bool Matches()
{
return base.Matches() && this.DayOfWeek == Convert.ToInt16(DateTime.Now.DayOfWeek);
}
}
public partial class DayOfYearConstraint : DateConstraint
{
public override bool Matches()
{
return base.Matches() && Date.Day == DateTime.Now.Day && Date.Month == DateTime.Now.Month;
}
}
public partial class AbsoluteDateConstraint : DateConstraint
{
public override bool Matches()
{
return base.Matches() && Date.Day == DateTime.Now.Day && Date.Month == DateTime.Now.Month && Date.Year == DateTime.Now.Year;
}
}
要进行验证,我只需
foreach(var dateConstraint in Restaurant.DateConstraints)
{
if(!dateConstraint.Matches()) { return false; }
}