DynamicObject devuelto por la consulta dapper no contiene todas las columnas seleccionadas

.net calculated-columns dapper orm sql-server

Pregunta

Estoy usando dapper.net para ejecutar una inserción de la siguiente manera:

var columns = conn.Query("INSERT INTO MyTable" +
                   "(Col1, Col2, Col3)" +
                   "VALUES (@Col1, @Col2, @Col3)" +
                   "SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity()",
                   myObj).Single();

myObj.Id = columns.Id;
myObj.ComputedValue = columns.ComputedColumn;

La consulta tiene éxito, pero se lanza una excepción en myObj.ComputedValue = columns.ComputedColumn; diciendo 'System.Dynamic.DynamicObject' does not contain a definition for 'ComputedColumn'

Como podría haber reunido, ComputedColumn es una columna calculada en la tabla, por lo que la devolveré después de la inserción junto con el Id. ¿Alguna idea de por qué esto estaría fallando?

Respuesta aceptada

Lo descubrí: tenía un gatillo en lugar de insertar en esta tabla. El desencadenante era devolver el Id para poder jugar bien con Entity Framework (que desde entonces he cambiado a apuesto). SELECT Id, ComputedColumn FROM MyTable WHERE Id = scope_identity() realidad ni siquiera devolvía una fila, pero dapper cargaba correctamente el Id devuelto por el desencadenador. Cambió el disparador para devolver Id y ComputedColumn y todo funciona muy bien.



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é