Уточнение кода примера 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 в виде анонимного типа.
Опять же, запрос фактически ничего не выбирает из таблицы, возможно, чтобы это было просто.