Я вижу странное поведение при работе с таблицей данных, которую я храню в кэше.Хотя это может быть по замыслу.
Сценарий прост.Я храню результаты запроса к БД в DataTable и помещаю их в этот кеш.После выполнения запроса к БД или получения результатов из кэша мне нужно выполнить некоторые пост-манипуляции с ним (например, добавить столбец или упорядочить).Кажется, что манипуляция происходит с элементом в кеше.Поэтому, когда я беру элемент из кэша, он должен получить ссылку на него?
Код
string CacheKey = "SearchData";
DataTable CachedResults = null;
object CachedObject = Cache[CacheKey];
if (CachedObject is DataTable) { CachedResults = (DataTable)CachedObject; }
if (CachedResults == null)
{
CachedResults = new DataTable();
// Query the database and fill CachedResults
if (Cache[CacheKey] == null)
{
Cache.Add(CacheKey, CachedResults, null, DateTime.Now.AddMinutes(30), Cache.NoSlidingExpiration, CacheItemPriority.Low, null);
}
}
CachedResults.Columns.Add("NewColumn");
Я предполагаю, что мой вопрос в том, является ли CachedResults просто ссылкой на кэшированный элемент?И если я хочу избежать этого, мне нужно будет сделать копию в DataTable?
Большое спасибо, Малекс