Отложенный / буферный пакет Dapper

#dapper

#dapper

Вопрос:

Я использую Dapper с пакетом Nuget SQLinq.

Вот несколько примеров кода, которые я использую.

Dapper с SQLinq выполняет запрос до того, как я запускаю .ToList() (например).

Я знаю, что с помощью Dapper вы можете указать «буфер», чтобы он выполнялся отложенно, но я не вижу, как применить это к пакету SQLinq NuGet для Dapper.

 using (var sqlCnn = base.GetConnection())
  {
   var viewData = sqlCnn.Query(from s in new SQLinq<Week_Returns_stats_V>(). . .

public SqlConnection GetConnection(bool mars = false)
{
    if (_sqlCnn != null)
    {
       if (_sqlCnn.State != ConnectionState.Open) CloseConnection();
    }

    if (mars)
    {
      var scsb = new SqlConnectionStringBuilder(_cnnString)
     {
         MultipleActiveResultSets = true
     };               
    }

    _sqlCnn = new SqlConnection(_cnnString);
    return _sqlCnn;
}
  

Ответ №1:

Я нашел, как включить буферизацию после запроса.

 public static IEnumerable<T> Query<T>
(this IDbConnection dbconnection, 
SQLinq<T> query, 
IDbTransaction transaction = null, 
bool buffered = true, 
int? commandTimeout = default(int?), 
CommandType? commandType = 
default(CommandType?)) where T : new();

var viewData = sqlCnn.Query(from s in new SQLinq<Returns_stats()
              select new
                {
                AVGPercentReturnX100 = s.AVGPercentReturnX100,
                PercentProfitableX100 = s.PercentProfitableX100
                }, buffered:true).AsEnumerable()