I Categoria modello con campo Nome e ogni nome di categoria deve essere univoco. Ho effettuato la convalida e funziona quando provo a creare una nuova categoria, ma ho un problema quando provo a modificarla. Per ora si tratta solo di verificare se il nome esiste e ovviamente lo fa quando provo a modificare la stessa categoria.FluentValidation convalida del nome univoco tramite database
Modello
[Validator(typeof(CategoryValidator))]
public class Category
{
public int ID { get; set; }
public string Name { get; set; }
virtual public ICollection<Image> Images { get; set; }
}
public class CategoryValidator : AbstractValidator<Category>
{
public CategoryValidator()
{
RuleFor(x => x.Name).NotEmpty().WithMessage("Category name is required.").Must(UniqueName).WithMessage("This category name already exists.");
}
private bool UniqueName(string name)
{
ProjecteDataContext _db = new ProjecteDataContext();
var category = _db.Categories.Where(x => x.Name.ToLower() == name.ToLower()).SingleOrDefault();
if (category == null) return true;
return false;
}
}
Come potete vedere ho UniqueName(string name)
funzione, ma come faccio a passare ID, o tutto il modello in esso in modo da poter verificare se è lo stesso ID come modello che sto cercando di modificare poi passa. Come potrei passare qualcosa come UniqueName(string name, int? id)
? Ho scoperto FluentValidation solo oggi e non riesco a capirlo.
Grazie, ora. – sed
nota a margine: è necessario disporre di DbContext non appena hai finito con esso, quindi "utilizzando (var _db = new ProjecteDataContext())" –