Entity Framework 核心没有带有错误消息的重复条目
Entity Framework Core no duplicate entries with ErrorMessage
使用 MVC-EFC 和 ErrorMessage 避免重复条目的最佳方法是什么 return
型号Test.cs
public class Test
{
public int Id { get; set; }
[Required(ErrorMessage = "Select a Name")]
[StringLength(50, ErrorMessage = "Max 50 character")]
public string Name { get; set; }
[StringLength(100, ErrorMessage = "Max 100 character")]
public string Text { get; set; }
}
我将 ApiController 与 "ErrorMessage" return 一起使用。
对于列 "Name",我不想要重复项和错误消息 return,例如 "Entry already available!"
什么是最好的方法?
尝试实现自定义 ValidationAttribute
客户ValidationAttribute
public class UniqueValidation : ValidationAttribute
{
private readonly string _errorMessage;
public UniqueValidation(string ErrorMessage)
{
_errorMessage = ErrorMessage;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (validationContext != null && typeof(IName).IsAssignableFrom(validationContext.ObjectType))
{
ApplicationDbContext db = validationContext.GetService(typeof(ApplicationDbContext)) as ApplicationDbContext;
IQueryable<IName> result = db.GetType().GetMethod("Set").MakeGenericMethod(validationContext.ObjectType).Invoke(db, null) as IQueryable<IName>;
var v = result.FirstOrDefault(u => u.Name == ((IName)validationContext.ObjectInstance).Name);
if (v != null)
{
return new ValidationResult(_errorMessage);
}
}
return ValidationResult.Success;
}
}
使用
public class File: IName
{
public int Id { get; set; }
[UniqueValidation("FileName is exist")]
public string Name { get; set; }
[InverseProperty("Avatar")]
public ICollection<ApplicationUser> Users { get; set; }
}
public interface IName
{
string Name { get; set; }
}
使用 MVC-EFC 和 ErrorMessage 避免重复条目的最佳方法是什么 return
型号Test.cs
public class Test
{
public int Id { get; set; }
[Required(ErrorMessage = "Select a Name")]
[StringLength(50, ErrorMessage = "Max 50 character")]
public string Name { get; set; }
[StringLength(100, ErrorMessage = "Max 100 character")]
public string Text { get; set; }
}
我将 ApiController 与 "ErrorMessage" return 一起使用。 对于列 "Name",我不想要重复项和错误消息 return,例如 "Entry already available!" 什么是最好的方法?
尝试实现自定义 ValidationAttribute
客户
ValidationAttribute
public class UniqueValidation : ValidationAttribute { private readonly string _errorMessage; public UniqueValidation(string ErrorMessage) { _errorMessage = ErrorMessage; } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { if (validationContext != null && typeof(IName).IsAssignableFrom(validationContext.ObjectType)) { ApplicationDbContext db = validationContext.GetService(typeof(ApplicationDbContext)) as ApplicationDbContext; IQueryable<IName> result = db.GetType().GetMethod("Set").MakeGenericMethod(validationContext.ObjectType).Invoke(db, null) as IQueryable<IName>; var v = result.FirstOrDefault(u => u.Name == ((IName)validationContext.ObjectInstance).Name); if (v != null) { return new ValidationResult(_errorMessage); } } return ValidationResult.Success; } }
使用
public class File: IName { public int Id { get; set; } [UniqueValidation("FileName is exist")] public string Name { get; set; } [InverseProperty("Avatar")] public ICollection<ApplicationUser> Users { get; set; } } public interface IName { string Name { get; set; } }