Уточнение кода примера Dapper

Я пытаюсь вырвать Dapper и, кажется, не хватает чего-то очень фундаментального, может кто-то объяснить следующий код, взятый с домашней страницы Dapper в коде Google, и объяснить, почему нет предложения From, а второй параметр в Query метод (динамический) передается анонимным типом, я понимаю, что это как-то настраивает командный объект, но хочет объяснения в простой терминологической терминологии.

Спасибо, Стивен

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);

Ответы

Ответ 1

Первые два примера просто не делают никакого "реального" доступа к данным, вероятно, для того, чтобы их было просто.
Да, используется соединение (connection.Query(...)), но только потому, что это единственный способ вызвать методы Dapper (поскольку они расширяют интерфейс IDbConnection).

Что-то вроде этого вполне допустимый код SQL:

select 'foo', 1

... он просто "генерирует" свой результат "на лету", фактически ничего не выбирая из таблицы.

Пример с параметрами и анонимным типом:

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

... просто показывает способность Dapper отправить параметры SQL в виде анонимного типа.
Опять же, запрос фактически ничего не выбирает из таблицы, возможно, чтобы это было просто.