ASP.NET MVC Core中是否为允许的值添加了数据注释?由于SQL Server中没有枚举,所以无法将带有枚举字段的类迁移到数据库。我想给类中的字段可能/允许的值。有什么办法吗?
public class Employee
{
[Key]
public int ID { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Status { get; set; }
}
我想提供活动和非活动作为“状态”字段的唯一可能值。
如@ ps2goat所述,您可以在数据库上使用检查约束。但是,对于进入API的模型,您可能仍想在此提供验证。理想情况下,您将尽其所能防止不良数据进入数据层。您没有提到是否使用n层体系结构,或者您的控制器是否直接引用数据模型。无论哪种方式,我都相信可以在API层或实体模型上使用此自定义属性。
This是一个很好的答案,它说明了如何创建自定义验证属性。这是一个旧答案,但仍然适用于.Net Core。 here是.Net Core中自定义验证属性的答案。它基本上看起来像这样:
public class EmployeeStatusAttribute : ValidationAttribute
{
private string[] _allowedValues;
public EmployeeStatusAttribute(string[] allowedValues)
{
_allowedValues = allowedValues;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var employee = value as Employee;
if (_allowedValues.Contains(employee.Status))
{
return ValidationResult.Success;
}
return new ValidationResult(`{employee.Status} is not a valid status`);
}
}
然后在您的模型中:
public class Employee
{
...
[EmployeeStatus("Active", "Inactive")]
public string Status { get; set; }
...
}