2012-09-10 3 views
4

Entity Framework의 데이터를 사용하는 프로젝트가 있고 WPF에 표시하십시오. Entity Framework에서 프레젠테이션 레이어의 데이터를로드/저장할 때 스레드 진행률 표시 줄을 표시하고 싶습니다.Entity Framework에서 데이터를 전송할 때 진행률 표시 줄 표시

어떻게 할 수 있습니까?

+3

EF는 진행 상황을 알릴 수있는 메커니즘을 제공하지 않습니다. – Eranga

+2

일반적으로 EF에 대한 커밋은 진행 표시 줄이 필요 없다는 것을 충분히 빨리 알고 있어야합니다. 시간이 걸리면 커밋 진행에 대한 사용자 피드백보다 근본 원인을 수정하는 것이 더 좋습니다. –

답변

1

Dispatcher Thread를 사용하여이를 수행 할 수 있습니다. 기본적으로 다른 UI 클래스에서 확장되는 공통 클래스를 만들어야합니다.

이것을 달성하려면 basic example을 여기에서 확인하십시오. 더 정확한 예제와 다운로드 가능한 코드는 here입니다.

3

Skip/Take 방법을 사용하여이 깔끔한 example을 확인했습니다. 기본적으로 각 라운드마다 x 개의 레코드를로드합니다 (다음 라운드에서 Skip). 테이블의 모든 데이터 양에서 계산하여 매 라운드 진행률 표시 줄을 업데이트 할 수 있습니다.

이것 좀 봐 :

List<MyDataTable> someData = new List<MyDataTable>(); 
int rowCount = dt.myDataTable.Count(); 

//TODO: <= display a progress bar here, and set max to rowCount... 

int currentRows = 0; 
while (currentRows < rowCount) 
{ 
    someData.AddRange(dt.myDataTable.Skip(currentRows).Take(10000).ToList()); 
    currentRows = someData.Count; 

    //TODO: <= update progress here... 

} 
+2

유일한 옵션이지만 레코드에 대해서는 건너 뛰기가 비효율적입니다 (sql dbs는 행 개수를 찾을 수 없습니다). 엔티티 프레임 워크는 실제로이를 지원해야합니다. 대규모 수출은 이것을 필요로합니다. – John