SqlClient CacheCustomArgs - свойствоNemiro.Data.dll
Массив дополнительных параметров инициализации пользовательского кэша. Эти параметры будут переданы в конструктор пользовательского кэша. Используется совместно со свойствами CacheType и CacheCustom.

Пространство имён: Nemiro.Data.Sql
Сборка: Nemiro.Data (в Nemiro.Data.dll) Версия: 2.11.4.126 (2.11.4.126)
Синтаксис

public Object[] CacheCustomArgs { get; set; }

Значение свойства

Тип:  Object 
Заметки

Если конструктор пользовательского кэша принимает параметры инициализации, то их можно указать в виде массива.

Важно соблюдать порядок элементов в массиве. Элементы массива будут переданы в параметры последовательно. Количество элементов массива должно соответствовать количеству параметров конструктора.

Список передваемых аргументов можно указать в файле конфигурации (через запятую) в параметре NeData:Sql:CacheCustomArgs (для веб-приложений) или в параметре NeDataSqlCacheCustomArgs (для приложений Windows).

<appSettings> 
  <clear /> 
  <!--Метод кэширования данных--> 
  <add key="NeData:Sql:CacheType" value="Custom" /> 
  <!--Имя типа пользовательского кэша--> 
  <add key="NeData:Sql:CacheCustom" value="MyCache" /> 
  <!--Список дополнительных параметров (через запятую), которые будут переданы в конструктор пользовательского кэша--> 
  <add key="NeData:Sql:CacheCustomArgs" value="My cache,C:\test" /> 
</appSettings>
Примеры

В следующем примере программно устанавливается пользовательский метод кэширования данных и выполняется запрос к SQL Server методом GetTable  с кэшированием результатов на 60 секунд.

В пользовательски кэш передаются два строковых параметра: My cache и C:\test. Число и тип параметров соответствует количеству принимаемых аргументов в конструкторе класса пользовательского кэша MyCache.

using (SqlClient client = new SqlClient())
{
  // кэширование результатов в файлом кэше на 60 секунд
  client.CacheDuration = 60;
  // устанавливаем пользовательский тип кэширования
  client.CacheType = CachingType.Custom;
  // указываем пользовательский тип кэширования
  client.CacheCustom = typeof(MyCache);
  // передаем параметры инициализации пользовательского кэша
  client.CacheCustomArgs = new object[] { "My cache", @"C:\test" };
  // формирование запроса
  client.CommandText = "SELECT * FROM messages";
  // выполнение запроса 
  var table = client.GetTable();
  // вывод результатов
  Console.WriteLine("Получено данных: {0}", table.Rows.Count);
  Console.WriteLine("Время выполнения запроса: {0}", client.LastQueryTime);
  Console.WriteLine("Результат получен из кэша: {0}", client.LastQueryResultsFromCache);
}

Ниже показан пример реализации конструктора пользовательского кэша класса MyCache, который принимает два строковых параметра.

using System.Runtime.Caching;

public class MyCache : ObjectCache
{

  // конструктор пользовательского кэша 
  // принимает два строковых параметра: name и path 
  public MyCache(string name, string path)
  {
  }

  // код реализации пользовательского кэша

}
См. также