2014-02-15 6 views
0

DataSet()을 저장할 수있는 응용 프로그램 상태를 만들 수 있습니까? 모든 사용자가 사용할 수있는 DataSet 변수를 만들고 싶습니다. 어떻게해야합니까?어떻게 응용 프로그램 변수에 dataset()을 저장할 수 있습니까?

감사합니다.

+0

을 차단 시도/모든 것을 묶어야하는 것을 선호 할 때까지

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

잠금은 계속? –

+0

로그인 한 모든 사용자가 공용 테이블에 추가되기를 원합니다. 공용 테이블에는 IP 주소, 사용자 이름 및 로그인 시간이 포함됩니다. * 데이터베이스를 사용하고 싶지 않습니다. - 응용 프로그램을 사용하고 싶습니다. 상태 변수 * –

답변

1

그것은 신중하게 MSDN을 (굵은 글씨는 내 꺼야)

응용 프로그램 상태는 모든 클래스에 사용할 수있는 데이터 저장소 읽기, 그러나

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

설정의 문제입니다 ASP.NET 응용 프로그램. 응용 프로그램 상태는 서버의 메모리에 저장되며 정보를 데이터베이스에 저장하고 검색하는 것보다 빠릅니다. 단일 사용자 세션 인 에 해당하는 세션 상태와 달리 응용 프로그램 상태는 모든 사용자에게 적용되고 세션에 적용됩니다. 따라서 응용 프로그램 상태는 한 사용자에서 또 다른으로 변경되지 않는 자주 사용되는 소량의 데이터를 저장하는 유용한 장소 인 입니다.

변수를 initilize하는 좋은 장소는 global.asax.cs 파일

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

에있는 Application_Start 이벤트에 있고 당신이 계획하는 경우 Application_End 이벤트

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

에 그것을 파괴 기억 데이터 집합의 내용을 수정하면 변수에 대한 동시 액세스를 방지해야하므로 잠금 메커니즘이 필요하다는 것을 명심하십시오. 페이지가 아웃 처리 또는 시간 종료 그러나 나는 아직도 마지막으로 왜 사용자에게 adataset을주고 싶지 않습니다

+0

그리고 이제 테이블에 새 행을 추가하기 위해 응용 프로그램 변수를 DataSet 변수로 생각하면됩니까? –

+0

이제이 데이터 집합을 수정하려는 경우 동일한 변수에 대한 동시 액세스와 같은 다른 문제가 발생합니다. – Steve

+0

global.asax 파일을 찾을 수 없습니다. 어떻게 만들 수 있습니까? –

0

그래서 응용 프로그램 변수에 DataSet을 저장하고 싶습니까?

응용 [ "YourDataSet"] ​​= YourDataSetVariable.

다른 의견에서 정보를 계속 업데이트하는 것으로 보일 수도 있으므로 세션 변수에 저장하는 것이 가장 좋습니다.