Dapper.NET
Основной запрос
Поиск…
Синтаксис
- public static IEnumerable <T> Query <T> (это IDbConnection cnn, строка sql, object param = null, транзакция SqlTransaction = null, bool buffered = true)
- public static IEnumerable <dynamic> Query (это IDbConnection cnn, строка sql, object param = null, транзакция SqlTransaction = null, bool buffered = true)
параметры
параметр | подробности |
---|---|
спп | Соединение с базой данных, которое должно быть открыто. |
SQL | Команда для выполнения. |
пары | Объект для извлечения параметров из. |
сделка | Транзакция, в которой этот запрос является частью, если таковой имеется. |
буферном | Будь или нет буферизация чтения результатов запроса. Это необязательный параметр с по умолчанию значением true. Когда буферизировано верно, результаты буферизуются в List<T> а затем возвращаются как IEnumerable<T> который безопасен для множественного перечисления. Если буферизация ложна, соединение sql будет открыто до тех пор, пока вы не закончите чтение, что позволит вам обрабатывать одну строку во времени в памяти. Множественные перечисления вызовут дополнительные подключения к базе данных. Хотя буферизованное ложное значение очень эффективно для сокращения использования памяти, если вы поддерживаете только очень мелкие фрагменты возвращенных записей, он имеет значительные накладные расходы по сравнению с желательным материализацией набора результатов. Наконец, если у вас есть многочисленные параллельные небуферизованные соединения sql, вам нужно рассмотреть головоломку пула соединений, вызывающую блокировку запросов до тех пор, пока соединения не станут доступными. |
Запрос для статического типа
Для типов, известных во время компиляции, используйте общий параметр с Query<T>
.
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; } }
}
//
IDBConnection db = /* ... */;
var @params = new { age = 3 };
var sql = "SELECT * FROM dbo.Dogs WHERE Age = @age";
IEnumerable<Dog> dogs = db.Query<Dog>(sql, @params);
Запрос для динамических типов
Вы также можете запросить динамически, если вы оставите общий тип.
IDBConnection db = /* ... */;
IEnumerable<dynamic> result = db.Query("SELECT 1 as A, 2 as B");
var first = result.First();
int a = (int)first.A; // 1
int b = (int)first.B; // 2
Запрос с динамическими параметрами
var color = "Black";
var age = 4;
var query = "Select * from Cats where Color = :Color and Age > :Age";
var dynamicParameters = new DynamicParameters();
dynamicParameters.Add("Color", color);
dynamicParameters.Add("Age", age);
using (var connection = new SqlConnection(/* Your Connection String Here */))
{
IEnumerable<dynamic> results = connection.Query(query, dynamicParameters);
}
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow