Поиск…


Основное использование

Не всегда возможно аккуратно упаковать все параметры в одном объекте / вызове. Чтобы помочь с более сложными сценариями, dapper позволяет параметру param быть экземпляром IDynamicParameters . Если вы это сделаете, ваш настраиваемый метод AddParameters вызывается в соответствующее время и передает команду для добавления. В большинстве случаев, однако, достаточно использовать ранее существовавшие типы DynamicParameters :

var p = new DynamicParameters(new { a = 1, b = 2 });
p.Add("c", dbType: DbType.Int32, direction: ParameterDirection.Output);
connection.Execute(@"set @c = @a + @b", p);
int updatedValue = p.Get<int>("@c");

Это показывает:

  • (необязательная) популяция из существующего объекта
  • (необязательно) добавление дополнительных параметров на лету
  • передача параметров команде
  • получение любого обновленного значения после завершения команды

Обратите внимание, что из-за того, как работают протоколы RDBMS, обычно можно получить только обновленные значения параметров после того, как все данные (из операции Query или QueryMultiple) были полностью использованы (например, на SQL Server обновленные значения параметров находятся в конце потока TDS).

Динамические параметры в Dapper

connection.Execute(@"some Query with @a,@b,@c", new {a=somevalueOfa,b=somevalueOfb,c=somevalueOfc});

Использование объекта шаблона

Вы можете использовать экземпляр объекта для формирования ваших параметров

public class SearchParameters {
  public string SearchString { get; set; }
  public int Page { get; set; }
}

var template= new SearchParameters {
  SearchString = "Dapper",
  Page = 1
};

var p = new DynamicParameters(template);

Вы также можете использовать анонимный объект или Dictionary



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow