많은 수의 레코드가있는 연관 속성에 액세스하는 속도에 문제가 있습니다.DevExpress eXpressApp Framework (XAF) 및 eXpress Persistent Objects (XPO) : 연결로드 시간을 어떻게 단축합니까?
부모 클래스가 MyParent
인 XAF 앱이 있습니다.
MyParent
에는 230 개의 레코드가 있습니다.
MyParent
에는 MyChild
이라는 하위 클래스가 있습니다.
MyChild
에는 49,000 개의 레코드가 있습니다.
MyChild
에서 :
// MyChild (many) and MyParent (one)
[Association("MyChild-MyParent")]
public MyParent MyParent;
그리고 MyParent
의 :
MyParent
기록
MyParent1
라고
[Association("MyChild-MyParent", typeof(MyChild))]
public XPCollection<MyCHild> MyCHildren
{
get { return GetCollection<MyCHild>("MyCHildren"); }
}
이있어
나는 표준적인 방법으로 MyParent
및 MyChild
사이에 정의 된 관계를 가지고 .
MyParent1
의 경우 630 MyChild
개의 레코드가 있습니다.
MyUI
클래스에 대한 DetailView가 있습니다.
사용자가 MyUI
DetailView에서 하나의 드롭 다운에서 항목을 선택하고 내 코드가 다른 드롭 다운을 MyChild
개체로 채워야합니다.
사용자는 첫 번째 드롭 다운에서 MyParent1
을 선택합니다.
첫 번째 드롭 다운에서 선택한 값에 대해 MyChild
개체 컬렉션을 반환하려면 MyUI
에 속성을 만들었습니다. 여기
[NonPersistent]
public XPCollection<MyChild> DisplayedValues
{
get
{
Session theSession;
MyParent theParentValue;
XPCollection<MyCHild> theChildren;
theParentValue = this.DropDownOne;
// get the parent value
if theValue == null)
{
// if none
return null;
// return null
}
theChildren = theParentValue.MyChildren;
// get the child values for the parent
return theChildren;
// return it
}
내가
NonPersistent
으로
DisplayedValues
특성을 표시했다. 나는 그것을 유지하는 것이 처음으로 컬렉션의 생성 속도를 높이고 드롭 다운을 채우기 위해 사용 된 후에는 필요하지 않기 때문에 저장하는 데 시간을 낭비하고 싶지는 않을 것이라고 생각합니다.
문제는 theParentValue = this.DropDownOne
에 전화하는 데 45 초가 걸린다는 점입니다.
사양 :
- 비스타 비즈니스 RAM
- 2의
- 8기가바이트33 GHz의 E6550 프로세서
- SQL Server Express는 2005
이 사용자가 DetailView 많은 드롭 다운 중 하나 기다릴 너무 깁니다.
가 어떻게 관련 값이 빠르게로드 할 수 있습니다 : 나는 두 가지 질문을 가지고 있기 때문에
나는 비즈니스 사례를 스케치하는 시간을했다?드롭 다운과 더 빠르게 실행되는 DetailView를 프로그래밍하는 또 다른 (간단한) 방법이 있습니까?
예, 당신은 630 드롭 다운에 표시 할 너무 많은 항목이지만,이 코드는 오랫동안 나는 속도가 49,000에 비례한다는 생각이 아니라 630 100 그렇게하고 있음을 말할 수있다 드롭 다운의 항목이 내 앱에 너무 많지는 않습니다.
내 드롭 다운이 많이 필요하므로 사용자가 더 복잡한 필터링 기준을 입력하도록하는 것은 적절하지 않습니다. 사용자는 하나의 값을 선택하고 관련 값을 확인해야합니다.
많은 수의 레코드를 찾는 것이 느리다고 생각하지만 몇 백 개를 찾는 것은 그리 오래 걸리지 않아야합니다.