====== LINQ-to-SQL классы и кэширование ======
У класса DBConnector существует обобщенный экземплярный метод [[:api:dbconnector:caching#GetCachedEntity|GetCachedEntity]].
public T GetCachedEntity(string key, Func fillAction)
public T GetCachedEntity(string key, Func fillAction)
public T GetCachedEntity(string key, double cacheInterval, Func fillAction)
public T GetCachedEntity(string key, double cacheInterval, Func fillAction)
Данный метод позволяет кэшировать произвольные объекты ссылочных типов (можно даже кэшировать //null//-значения). Если мы хотим закэшировать коллекцию объектов, полученных с помощью LINQ-to-SQL, ее сначала нужно сделать вещественной с помощью любого из методов: ToList, ToArray или ToDictionary. Для того, чтобы кэшировать значимый тип (value type), необоходимо выполнить принудительный //boxing// (число можно для этого, например, преобразовать в строку).
Пример использования:
DBConnector cnn = new DBConnector();
List banners = cnn.GetCachedEntity>(pageAddress, 10, GetPageBanners);
Где //GetPageBanners// – метод, возвращающий //List//, который будет вызван только при заполнении кэша. Метод может быть определен как без параметров, так и с единственным строковым параметром. Во втором случае в метод будет передано значение ключа (параметр //key//).