Pergunta

Estou tentando grocar o Dapper e parece que está faltando algo muito fundamental. Alguém pode explicar o código a seguir retirado da página inicial do Dapper no código do Google e explicar por que não há cláusula From e o segundo parâmetro para a consultamétodo (dinâmico) é passado um tipo anônimo, suponho que isso é de alguma forma configurar um objeto de comando, mas gostaria de uma explicação em mera terminologia mortal.

Obrigado, Stephen

public class Dog {    
    public int? Age { get; set; }    
    public Guid Id { get; set; }    
    public string Name { get; set; }    
    public float? Weight { get; set; }    
    public int IgnoredProperty {
        get { return 1; }
    }
}

var guid = Guid.NewGuid();
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });            

dog.Count().IsEqualTo(1);
dog.First().Age.IsNull();
dog.First().Id.IsEqualTo(guid);
Foi útil?

Solução

Os primeiros dois exemplos simplesmente não oferecem nenhum acesso "real" aos dados, provavelmente para mantê-los simples.
Sim, existe uma conexão usada (connection.Query(...)), mas apenas porque essa é a única maneira de chamar os métodos de Dapper (porque eles estendem a interface IDbConnection).

Algo assim é um código SQL perfeitamente válido:

select 'foo', 1

... ele apenas "gera" seu resultado instantaneamente, sem realmente selecionar nada em uma tabela.

O exemplo com os parâmetros e o tipo anônimo:

var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });)

... apenas mostra a capacidade do Dapper de enviar parâmetros SQL na forma de umtipo anônimo .
Novamente, a consulta não seleciona realmente nada de uma tabela, provavelmente para mantê-la simples.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top