Как я могу хранить набор данных () в переменной приложения?

Можно ли создать состояние приложения, которое может хранить DataSet()? Я хочу создать переменную DataSet, которая может быть доступна для любого пользователя. Как я могу это сделать?

Спасибо!

2 ответа

Решение

Это просто вопрос настройки

 if(Application["myGlobalDataset"] == null)
     Application["myGlobalDataset"] = LoadMyDataSet();

Тем не менее, внимательно прочитайте MSDN (жирный шрифт мой)

Состояние приложения - это хранилище данных, которое доступно всем классам в приложении ASP.NET. Состояние приложения хранится в памяти на сервере и быстрее, чем хранение и извлечение информации в базе данных. В отличие от состояния сеанса, характерного для одного сеанса пользователя, состояние приложения применяется ко всем пользователям и сеансам. Таким образом, состояние приложения является полезным местом для хранения небольших объемов часто используемых данных, которые не изменяются от одного пользователя к другому.

Хорошее место для инициализации переменной находится в Application_Start событие найдено в global.asax.cs файл

void Application_Start(object sender, EventArgs e) 
{
     if(Application["myGlobalDataset"] == null)
        Application["myGlobalDataset"] = LoadMyDataSet();
}

и не забудьте уничтожить его в Application_End событие

void Application_End(object sender, EventArgs e) 
{
    //  Code that runs on application shutdown
     if(Application["myGlobalDataset"] != null)
        Application["myGlobalDataset"].Dispose();
}

Если вы планируете изменить содержимое набора данных, имейте в виду, что вам нужно предотвратить одновременный доступ к переменной, и, следовательно, необходим механизм блокировки.

 try
 {
     Application.Lock()
     Dataset ds = Application["myGlobalDataset] as Dataset;
      ......
  }
  finally
  {
      Application.UnLock()
  }

Блокировка сохраняется до тех пор, пока страница не завершит обработку или не истечет время ожидания, однако я все еще предпочитаю заключать все в блок try/finally

То есть вы просто хотите сохранить DataSet в переменной приложения?

Приложение ["YourDataSet"] ​​= YourDataSetVariable.

Из ваших других комментариев, вероятно, лучше всего сохранить его в переменной Session, так как кажется, что вы будете продолжать обновлять информацию.

Другие вопросы по тегам