Pregunta

Cuando se crea un criterio, se pueden agregar restricciones que se aplican a una propiedad. Hay 2 formas de crear una restricción:

Restrictions.Eq(string propertyName, object value)
o
Restrictions.Eq(IProjection projection, object value)

La cosa es que no me siento cómodo nombres de propiedades que pasa como cadenas, ya que si es que alguna vez cambian, mi proyecto se compilará como de costumbre y cualquier posible desajuste de nombres sólo se encontró durante las pruebas unitarias. Estoy tratando de aplicar TDD pero no va a suceder en el corto plazo, por lo que estoy tratando de dependencias límite de la unidad de pruebas para comprobar si hay errores (hasta que logramos abrazar TDD).

Algunas ideas? Gracias de antemano!

¿Fue útil?

Solución

El uso de LINQ, QueryOver (NH3.x) o NH Lambda Extensiones (NH2.x) o NHibernate Extensiones de expresión (NH1.2 )

Todos estos son más de tipo fuerte que sólo el uso de cadenas.

Otros consejos

Puedo sentir su dolor.

Pero no hay manera de poner referencia dinámica a sus propiedades mediante proyecciones en los criterios de la API, al igual que no se puede hacer el mapeo de NHibernate detectar una tabla o columna cambio de nombre.

Haciendo una búsqueda y reemplazo paso a paso con "Propiedad" con el trabajo en la mayoría de los casos.

Como siempre y cuando tenga una cobertura completa de las pruebas unitarias (que no lo hace?), No debería ser un problema, en caso de que: -?)

Otra razón para evitar el uso de cadenas para los nombres de las propiedades es que refactorización utilizando, por ejemplo, ReSharper no puede arreglar esas referencias. Aquí es donde realmente brilla Fluido NHibernate.

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