LightSwitch는 SQL Server 데이터베이스의 일부 데이터를 그룹화해야하며, 즉석에서 지원하지 않으므로 Eric에 따라 도메인 서비스를 사용합니다 Erhardt의 guide.LightSwitch - 도메인 서비스를 사용하여 모든 요청을 대량으로로드
그러나 내 테이블에는 여러 개의 외래 키가 포함되어 있으며 올바른 관련 데이터가 표에 표시되기를 원합니다 (가이드 에서처럼 키 값만 표시됨). 나는 이런 내 새로 만든 엔티티의 관계 추가하여이 문제를 해결 :
그리고 내 도메인 서비스 클래스는 다음과 같습니다
public class AzureDbTestReportData : DomainService
{
private CountryLawDataDataObjectContext context;
public CountryLawDataDataObjectContext Context
{
get
{
if (this.context == null)
{
EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder();
builder.Metadata =
"res://*/CountryLawDataData.csdl|res://*/CountryLawDataData.ssdl|res://*/CountryLawDataData.msl";
builder.Provider = "System.Data.SqlClient";
builder.ProviderConnectionString =
WebConfigurationManager.ConnectionStrings["CountryLawDataData"].ConnectionString;
this.context = new CountryLawDataDataObjectContext(builder.ConnectionString);
}
return this.context;
}
}
/// <summary>
/// Override the Count method in order for paging to work correctly
/// </summary>
protected override int Count<T>(IQueryable<T> query)
{
return query.Count();
}
[Query(IsDefault = true)]
public IQueryable<RuleEntryTest> GetRuleEntryTest()
{
return this.Context.RuleEntries
.Select(g =>
new RuleEntryTest()
{
Id = g.Id,
Country = g.Country,
BaseField = g.BaseField
});
}
}
public class RuleEntryTest
{
[Key]
public int Id { get; set; }
public string Country { get; set; }
public int BaseField { get; set; }
}
}
그것은 작동
과 모든, 모두 국가 이름 Basefield는 Autocomplete 박스로로드되지만 매우 오랜 시간이 걸립니다. 두 개의 열을 사용하면 한 페이지를로드하는 데 5-10 초가 걸리고, 아직 구현하지 않은 열이 10 개 더 있습니다.
각각의 관련 데이터 (각 국가 및 BaseField)가 하나의 요청을 필요로하므로 오랜 시간이 걸리는 이유가 있습니다. 페이지를로드하면 피들러에서 다음과 같습니다 :이 전혀 허용
, 그것은, 하나에 모든 전화를 결합하는 방법해야하지 않고 동일한 테이블을로드 할 때 그렇습니다처럼 도메인 서비스를 통해
그래서 .. 많은 설명이있었습니다. 제 질문은 : 관련 데이터를 한 번에로드하거나 다른 방식으로 성능을 향상시킬 수있는 방법이 있습니까? 화면을로드하는 데 10 초 이상 걸리지 않아야합니다. 어떤 도움 또는 입력!의