Uso del Esfuerzo (Herramienta de Pruebas EF) con Columna Calculada

c#-4.0 database effort entity-framework integration-testing

Pregunta

Tengo una serie de pruebas de integración que acceden directamente a la base de datos (crear objetos de prerrequisitos de prueba), realizar las pruebas y luego limpiarlas, sin embargo, no quise probar el mismo método en memoria.

Acabo de usar Effort en mi proyecto y funciona muy fácilmente. Sin embargo, he encontrado un problema que he estado intentando, pero no he podido resolver.

Una de las tablas que necesito rellenar con datos ficticios, como requisito de prueba, contiene una columna calculada (nvarchar, no nula). Para el alcance de la prueba, realmente no me importa el valor de esa columna, pero incluso si intento insertar datos ficticios, mis datos se ignoran y luego aparece un error:

"Column 'x' cannot be null. Error code: GenericError"

En mis pruebas, estoy usando el mismo archivo edmx que usa el código real. Esto me impide actualizar constantemente la copia edmx.

¿Hay alguna forma en la que pueda forzar la prueba para actualizar edmx (en tiempo de ejecución) de modo que esa columna sea una columna no computable que pueda ser anulada? [anulando OnModelCreating] o hay una manera de insertar un valor predeterminado (todo vale para esta columna) para detener este error? [anulando SaveChanges]

Actualmente he intentado lo siguiente:

  • Adjuntar los objetos usando .Attach () en lugar de .Add ()
  • Configuración del EntityState a Sin cambios después de agregar
  • Forzando el valor a través de Entry.OriginalValues ​​[estos valores ya que la entidad está en estado Agregado]

Editar:

He intentado anular el método OnModelCreating , pero fue en vano ya que esto es DB-First.

"Column 'x' cannot be null. Error code: GenericError"

Respuesta popular

Abra su archivo EDMX en el editor XML, encuentre su entidad en StorageModels y agregue a la definición de columna StoreGeneratedPattern="Computed" .

Pero si actualiza o elimina y agrega esa tabla, perderá esta modificación. En realidad, puede escribir una aplicación de consola que actualizará su archivo edmx y agregará StoreGeneratedPattern="Computed" donde sea necesario y puede agregar esas aplicaciones para crear eventos previamente en el estudio.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué