Pregunta

OK entonces Todavía quiero usar el modelo de esquema de EF 4.0, Pero también quiero la API y la flexibilidad de EF 4.1.

Entonces, en mi aplicación, agregué el código de generación DBContext de mis modelos EF 4.0 actuales.

Ahora, mis preguntas es ¿cuáles son mis opciones para validar mis modelos DBSET (EF 4.1) sin que se eliminen?

DataSannotation no parece cortarlo porque cada vez que actualizo mi modelo visual, completo elimina todas mis modificaciones.

  • He oído hablar de clases parciales, pero eso parece ser realmente desordenado.
  • Realmente no quiero hacer validaciones en mi controlador.
  • Quiero hacer esto escalable para poder transferir fácilmente mis clases desde ASP.NET MVC a WPF y etc.

¿Hay alguna forma de hacer esto? Repositorio de validación? ¿Capa de validación separada? Validación dentro de las capas del repositorio? Los ejemplos también serían apreciados.

Por favor, ayúdame. Gracias :)

¿Fue útil?

Solución

Usando un generador de plantilla, parece posible hacer uno de los siguientes:

  1. Cree una clase de amigo para cada una de sus entidades y defina la clase de amigos nombrando la convención en la plantilla.
  2. Figura una forma de generar las anotaciones de datos, almacenándolas en una fuente separada o algo así.

O use una capa separada. Si está utilizando repositorios, puede incrustar la validación allí. Elegí tener una fábrica de validación de ORM, que atrae a reglas que coincidan con una entidad (ya sea de forma estadística o dinámica), y la fábrica hace el trabajo (ya que eso es más similar al principio de responsabilidad singular).

Hth.

Otros consejos

En mi proyecto, mezclo contextos 4.1 y 4.0. Es posible hacer una migración lenta. También hay una extensión de ingeniería inversa de Entity Framework 4.1 que se puede agregar a Visual Studio. (Para permitirle usar 4.1 mediante el código de generación de objetos POCO + asignaciones de su base de datos existente).

No recomendaría crear un DBContext que exponga modelos generados por EDMX de 4.0. También pierde los beneficios de heredar ObjectContext/DBContext, heredar propiedades (versión de fila, ECT) y controlar el objeto POCO (no código generado para que no tenga que preocuparse por los parciales + atributo metadatatipo como en 4.0)

Su pregunta relacionada con el esquema de validación creado con EF4.0:

Por lo tanto, las anotaciones de datos no están completamente limpiadas al actualizar su modelo, debe usar el atributo Metadatatype.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataAnnotations.metadatatypeAttribute.aspx

que tiene un ejemplo

No sé por qué MS enseña a los programadores tan malas prácticas. Especialmente el uso de anotaciones de datos para el mapeo en EF 4.1 fue una decisión de diseño realmente estúpida (por ejemplo, LINQ-to-SQL utilizó atributos separados establecidos para hacer una separación clara entre el mapeo y la validación).

Las anotaciones de datos se utilizan para validar los datos de la entrada del usuario y la entrada del usuario es una vista / controlador relacionada con el controlador donde cada vista puede necesitar diferentes reglas de validación => Si desea utilizar anotaciones de datos, estas reglas pertenecen a la vista del modelo no a la entidad.

En los casos más simples en los que la vista y la entidad es 1: 1, puede usar anotaciones de datos directamente, pero eso es realmente para aplicaciones más simples y una vez que realice una aplicación tan simple, probablemente pueda usar los datos dinámicos de ASP.NET directamente y dejar que Framework cree todas las páginas para ti basado en tu modelo de entidad.

Los datos dinámicos de ASP.NET también muestran cómo aplicar anotaciones de datos para entidades generadas en clases de amigos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top