Tengo un modelo de clases que tiene una propiedad de descripción con un atributo de anotación de datos de StringLength y la longitud se establece en 100 caracteres. Cuando esta propiedad tiene más de 100 caracteres y Entity Framework intenta guardar esta propiedad, aparece el siguiente error.C# Cómo utilizar DataAnnotations StringLength y SubString para eliminar texto
[StringLength(100, ErrorMessage = "Description Max Length is 100")]
public string Description { get; set; }
error:
"Error en la validación de una o más entidades Ver propiedad '' EntityValidationErrors para más detalles."
No estoy seguro de si esto ayuda en la formación de una solución, pero Estoy usando Entity Framework CTP5 y Code First.
Lo que quiero hacer es si la descripción tiene más de 100 caracteres, luego elimino los caracteres que tienen más de 100 caracteres para que la descripción se pueda almacenar y no se produzca ningún error.
Creo que debería poder utilizar el atributo DataAnnotación StringLength manualmente para ayudarme a identificar la longitud válida de la descripción y luego usar SubString para eliminar cualquier carácter que exceda el valor válido.
¿Alguien sabe cómo utilizar DataAnnotation en esta situación? ¿O hay otras opciones disponibles?
actualización hice lo que sugirió BrokenGlass y aquí mi aplicación si:
public static class DataAnnotation
{
public static int? GetMaxLengthFromStringLengthAttribute(Type modelClass, string propertyName)
{
int? maxLength = null;
var attribute = modelClass.GetProperties()
.Where(p => p.Name == propertyName)
.Single()
.GetCustomAttributes(typeof(StringLengthAttribute), true)
.Single() as StringLengthAttribute;
if (attribute != null)
maxLength = attribute.MaximumLength;
return maxLength;
}
}
int? maxLength = DataAnnotation.GetMaxLengthFromStringLengthAttribute(typeof(Car), "Description");
if(maxLength != null && car.Description.Length > maxLength)
car.Description = car.Description.Substring(0, maxLength.Value);
BarDev
¿Hay alguna otra etiqueta que deba agregar para esta pregunta? –
No sé mucho sobre DataAnnotation. En cuanto a otras opciones, podría implementar los getters/setters, y hacer un check/truncation en el setter. – Rob
Gracias por la sugerencia. Simplemente lo hice como un trabajo completo. Probablemente estoy complicando el problema. Pero, puedo ver diferentes situaciones en las que me gustaría tener Validación y otras situaciones en las que me gustaría eliminar caracteres adicionales. En mi aplicación WCF, me gustaría eliminar el carácter adicional y no generar un error, pero en una aplicación de entrada de datos como ASP.NET o Win Forms me gustaría activar un mensaje de validación para el usuario. –