如果我有一个模型来跟踪员工的假期请求,那么我将如何确保员工在同一日期范围内不休多个假期?是否可以通过验证或在SQL Server中创建约束来处理?我首先将数据库用于该项目。
public partial class HolidayRequestForm
{
public int RequestID { get; set; }
public int EmployeeID { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
public System.DateTime StartDate { get; set; }
[DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
public System.DateTime FinishDate { get; set; }
[Range(0.0001, int.MaxValue, ErrorMessage = "Hours Requested must be greater than zero. ")]
public decimal HoursTaken { get; set; }
public string Comments { get; set; }
public int YearCreated { get; set; }
public int MonthCreated { get; set; }
public int DayCreated { get; set; }
public Nullable<int> YearOfHoliday { get; set; }
[UIHint("Boolean.cshtml")]
public Nullable<bool> Approved { get; set; }
public string SubmittedBy { get; set; }
public string ApprovedBy { get; set; }
public virtual Employee Employee { get; set; }
}
理想情况下,我希望两名员工可以请求相同的日期范围,但是一个员工不能在同一日期范围内请求两个假期。我可以使用自定义验证属性吗?
答案 0 :(得分:0)
给定的方案是一种业务逻辑,因此最好在代码本身中实现它,而不要使用数据库约束或触发器。
您可以为此创建自定义validator
并在业务层中进行验证。这种方法将易于维护/升级。
使用常规方法进行验证,或通过继承ValidationAttribute
并重写IsValid
方法来创建自定义ValidationAttribute。