c# - net - Validación del marco de la entidad
entity framework homepage (7)
Me estoy preparando para comenzar un nuevo proyecto y he estado investigando el marco de la entidad. Mi pregunta es ¿cuál es la mejor estrategia para validar las entidades? Otros proyectos en los que he trabajado han usado atributos para la mayoría de la validación, pero obviamente esto no es posible en el marco de la entidad. ¿Es la única forma de hacer esto al manejar los métodos parciales en los establecedores de propiedades? Todos los consejos son muy apreciados.
En realidad, no he usado el marco Entity antes, pero una búsqueda rápida indica que tiene varias opciones.
1) Validar en otra capa en su aplicación
Siempre es una opción, solo pensé en tirarlo explícitamente.
2) Enganche en los eventos OnChanged de la Entidad y luego realice la validación
Probablemente sea frágil y se vuelva confuso / lento después si tiene muchas propiedades diferentes que pueden cambiar para cada entidad.
3) Implementar métodos parciales para validar los cambios de propiedad
De acuerdo con esta publicación y este tutorial, hay métodos parciales disponibles para la validación. Esta parece ser la mejor opción, ya que no es muy intrusiva y puede implementar selectivamente la validación que desee.
Espero que eso ayude. Buena suerte.
En .NET 4, habrá compatibilidad de validación inmediata en Entity-Framework.
Consulte: http://blogs.msdn.com/adonet/archive/2010/01/13/introducing-the-portable-extensible-metadata.aspx
Así que no trabajes demasiado para implementar una lógica de validación demasiado compleja ...
Si usa ASP.NET MVC, puede usar Validation Application Block o System.ComponentModel.DataAnnotations. Los artículos Uso de anotaciones de datos y Uso de bloques de aplicaciones muestran cómo hacerlos usando Linq, pero el uso con entidad-marco debe ser similar.
Si está utilizando WPF o Windows Forms, entonces puede implementar la interfaz IDataErrorInfo .
La aplicación de ejemplo BookLibrary del proyecto WPF Application Framework (WAF) muestra cómo se pueden validar las entidades creadas por Entity Framework.
Hemos reemplazado el contexto del objeto e interceptado el método SaveChanges ()
public abstract class ValidationObjectContext : ObjectContext{
...
public override int SaveChanges(SaveOptions options){
ValidateEntities();
return base.SaveChanges(options);
}
}
De esta forma, la validación se deja hasta el último minuto antes de que se establezcan las conexiones, pero después de que esté (esperando) satisfecho con el gráfico y listo para comprometerse (a diferencia de otras opciones de validación sobre cualquier cambio, ya que algunas reglas complejas como los que tenemos solo son válidos después de establecer varias propiedades). Tenemos dos niveles de validación, validación de propiedad básica, cosas como longitud de cadena, nulabilidad, etc. Y validación de lógica de negocios, lo que puede requerir la verificación de reglas en varios objetos, posiblemente presionando la base de datos para confirmar.
Considere implementar IValidatableObject en sus entidades.
Este artículo describe cómo integrar Validation Application Block con Entity Framework. Puede ser de alguna ayuda.