如果我有一个跟踪员工休假请求的模型,我该如何确保员工不会在同一日期范围内休假?这将通过验证或在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; }
}
理想情况下,我希望两名员工可以申请相同的日期范围,但一名员工不能在同一日期范围内申请两个假期。我可以使用自定义验证属性吗??
给定的场景是一个业务逻辑,因此最好在代码本身中实现,而不是在数据库约束或触发器中实现。
您可以为其创建一个自定义validator
,并在业务层中进行验证。这种方法将易于维护/升级。
使用常规方法进行验证,或者通过内置ValidationAttribute
和重写IsValid
方法来创建自定义ValidationAttribute。