Потоковая запись, содержащая большой байтовый массив из SQL Server - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу stream запись с SQL Server. Запись содержит массив byte (изображение) и метаданные об изображении. Все, что я видел до сих пор, - это потоковая передача столбца, , а не записи .

У меня есть 2 вопроса:

  • Как мне передать все данные / запись и заполнить мой класс?

  • Почему ExecuteSprocAccessor<>, который я предполагаю буферы, так же эффективен, как поток с изображением 65 МБ (около 90 секунд)?

Я унаследовал этот код и думаю, что он слишком медленный и ресурсоемкий, поэтому я ищу альтернативы, и я думаю, в этом есть смысл.

Моя попытка потоковой передачи (это работает):

System.IO.Stream stream;

using (var cmd = _mgr.GetStoredProcCommand("dbo.uspUserDocument_Select", paramValues))
{
      cmd.Connection = _mgr.CreateConnection();
      cmd.CommandTimeout = 180;

      await cmd.Connection.OpenAsync();

      using (var dr = await cmd.ExecuteReaderAsync(System.Data.CommandBehavior.SequentialAccess).ConfigureAwait(false))
      {
            while (await dr.ReadAsync())
            {
                 stream = dr.GetStream(4);
                 // I NEED TO GET THE WHOLE RECORD AND POPULATE A CLASS
            }
      }
}

Использование ExecuteSprocAccessor:

return _mgr.ExecuteSprocAccessor<UserDocument>("dbo.uspUserDocument_Select",rowMapper, paramValues).ToList();
...