====== 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//).