Массив дополнительных параметров инициализации пользовательского кэша. Эти параметры будут переданы в конструктор пользовательского кэша.
Используется совместно со свойствами
CacheType и
CacheCustom.
Пространство имён: Nemiro.Data.SqlСборка: Nemiro.Data (в Nemiro.Data.dll) Версия: 2.11.4.126 (2.11.4.126)
public Object[] CacheCustomArgs { get; set; }
public Object[] CacheCustomArgs { get; set; }
Public Property CacheCustomArgs As Object()
Get
Set
Public Property CacheCustomArgs As Object()
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>
<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())
{
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);
}
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);
}
Using client As New SqlClient()
client.CacheDuration = 60
client.CacheType = CachingType.Custom
client.CacheCustom = GetType(MyCache)
client.CacheCustomArgs = New Object() { "My cache", "C:\test" }
client.CommandText = "SELECT * FROM messages"
Dim table As DataTable = client.GetTable()
Console.WriteLine("Получено данных: {0}", table.Rows.Count)
Console.WriteLine("Время выполнения запроса: {0}", client.LastQueryTime)
Console.WriteLine("Результат получен из кэша: {0}", client.LastQueryResultsFromCache)
}
Using client As New SqlClient()
' кэширование результатов в файлом кэше на 60 секунд
client.CacheDuration = 60
' устанавливаем пользовательский тип кэширования
client.CacheType = CachingType.Custom
' указываем пользовательский тип кэширования
client.CacheCustom = GetType(MyCache)
' передаем параметры инициализации пользовательского кэша
client.CacheCustomArgs = New Object() { "My cache", "C:\test" }
' формирование запроса
client.CommandText = "SELECT * FROM messages"
' выполнение запроса
Dim table As DataTable = 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
{
public MyCache(string name, string path)
{
}
}
using System.Runtime.Caching;
public class MyCache : ObjectCache
{
// конструктор пользовательского кэша
// принимает два строковых параметра: name и path
public MyCache(string name, string path)
{
}
// код реализации пользовательского кэша
}
Imports System.Runtime.Caching
Public Class MyCache
Implements ObjectCache
Public Sub New(name As String, path As String)
End Sub
End Class
Imports System.Runtime.Caching
Public Class MyCache
Implements ObjectCache
' конструктор пользовательского кэша
' принимает два строковых параметра: name и path
Public Sub New(name As String, path As String)
End Sub
' код реализации пользовательского кэша
End Class