Dapper-dot-net "sin nombre de columna"
-
27-10-2019 - |
Pregunta
Tengo un conjunto de resultados que podría verse así:
ID (no column name) anotherID
---- ---------------- ----------
1 super 3
1 super 4
3 duper 6
4 really 7
4 really 8
Tengo 2 problemas:
Primero: ¿Cómo uso Dapper con una columna sin nombre?
Segundo: Quiero tener una relación de hijo padre de tal manera que obtenga 3 objetos cada uno con una lista de otroid, por ejemplo, por ejemplo:
public class MyObject
{
public int ID
public string Name
public int[] Children
}
Solución
Bueno, las columnas sin nombrar no son compatibles con Dapper. Realmente nunca vi una razón para ellos.
Supongo que podríamos generar apoyo para:
class Foo { [ColumnNumber(1)] public string Name {get;set;} }
El problema es que introduce un método muy frágil de consulta que me gusta mucho, transmitiendo una directiva a Query
es igual de torpe.
Sin embargo, si está contento de cambiar la forma en que obtiene los resultados, podría trabajar en torno a esto.
var grid = QueryMultiple(@"set nocount on
declare @t table(Id int, Name nvarchar(max), AnotherId int)
insert @t
exec proc
set nocount off
select Id, Name from @t
select Id, AnotherId from @t
");
Luego use la técnica aquí en mapa múltiple: Multi-mapper para crear jerarquía de objetos