2008-11-20 7 views
0

Мой сайт работает на одном сервере. Я кэширую DataTable. Каждый сеанс имеет ссылку на собственный DataView, относящийся к этому DataTable. Я беспокоюсь о том, когда мне нужно внести изменения в базовые данные, которые они будут распространять на каждую из сессий, ссылающихся на него.Обработка обновлений кэшированной DataTable, когда сеанс пользователя содержит DataViews на основе этого DataTable

Или есть лучший способ справиться с этой ситуацией.

ответ

0

В принципе, да. Изменения будут распространяться на представления при условии, что вы продолжаете использовать тот же DataTable. Однако есть вероятность проблем, в зависимости от того, как это реализовать:

  • У вас есть потенциальное состояние гонки при генерации кэшированного DataTable в первый раз: несколько запросов к серверу может обнаружить, что в кэше DataTable не существует и пытается сгенерировать его - в этом случае у вас может быть дубликат DataTable.

  • Если вы регенерируете кэшированный DataTable (например, если он удален из кэша ASP.NET из-за истечения тайм-аута), то существующие DataViews в сеансе будут продолжать ссылаться на старый DataTable.