Hello, a way to validate data in your business entity, one option would be to use Fluent Validation
JeremySkinner / FluentValidation
Here you have an example code
public class ProductoValidator : AbstractValidator<Producto>
{
public ProductoValidator()
{
CascadeMode = CascadeMode.Continue;
RuleFor(x => x.Nombre)
.NotEmpty().WithMessage("El Nombre no puede estar vacío")
.Must(x => x.Length > 3).WithMessage("El Nombre, debe tener mas de tres caracteres")
.Must(x => x.Length < 81).WithMessage("El Nombre, debe tener menos de 81 caracteres");
RuleFor(x => x.CategoriaId)
.NotNull().WithMessage("Favor de asignar un elemento")
.NotEqual(0).WithMessage("Debe seleccionar Categoría");
RuleFor(x => x.LineaId)
.NotNull().WithMessage("Favor de asignar un elemento")
.NotEqual(0).WithMessage("Debe seleccionar la Linea");
RuleFor(x => x.ModeloId)
.NotNull().WithMessage("Favor de asignar un elemento")
.NotEqual(0).WithMessage("Debe seleccionar un Modelo");
RuleFor(x => x.MarcaId)
.NotEqual(0).WithMessage("Debe seleccionar una Marca")
.NotNull().WithMessage("Favor de asignar un elemento");
}
}
Another example
public class ProveedorValidator : AbstractValidator<Proveedor>
{
public ProveedorValidator()
{
// Indicamos que la validación continue aún y cuando una de ellas falle.
CascadeMode = CascadeMode.Continue;
RuleFor(x => x.RazonSocial)
.NotEmpty().WithMessage("La Razón Social no puede estar vacía")
.Must(x => x.Length > 3).WithMessage("La Razón Social, debe tener mas de tres caracteres")
.Must(x => x.Length < 81).WithMessage("La Razón Social, debe tener menos de 81 caracteres");
RuleFor(x => x.DocumentoIdentidad)
.NotNull().WithMessage("Favor de asignar un elemento")
.NotEqual((EnumDocumentoEdentidad)Convert.ToInt32(-1)).WithMessage("Debe seleccionar Documento de Identidad");
When(x => x.DocumentoIdentidad == EnumDocumentoEdentidad.DNI, () =>
{
RuleFor(x => x.NroDocumento)
.NotNull()
.NotEmpty().WithMessage("El Nro. de DNI, no puede estar vacía")
.Length(8).WithMessage("El Nro. de DNI, debe de tener una longitud de '8' caracteres")
.Must(x => x != "11111111" && x != "22222222"
&& x != "33333333" && x != "44444444"
&& x != "55555555" && x != "66666666"
&& x != "77777777" && x != "88888888"
&& x != "99999999").WithMessage("El Nro. DNI, no tiene un formato valido");
});
When(x => x.DocumentoIdentidad == EnumDocumentoEdentidad.RUC, () =>
{
RuleFor(x => x.NroDocumento)
.NotNull()
.NotEmpty().WithMessage("El Nro. de RUC, no puede estar vacía")
.Length(11).WithMessage("El Nro. de RUC, debe de tener una longitud de '11' caracteres")
.Must(x => x != "11111111111" && x != "22222222222"
&& x != "33333333333" && x != "44444444444"
&& x != "55555555555" && x != "66666666666"
&& x != "77777777777" && x != "88888888888"
&& x != "99999999").WithMessage("El Nro. RUC, no tiene un formato valido");
});
}
}
You can adapt it to your needs.