0

LightSwitch는 SQL Server 데이터베이스의 일부 데이터를 그룹화해야하며, 즉석에서 지원하지 않으므로 Eric에 따라 도메인 서비스를 사용합니다 Erhardt의 guide.LightSwitch - 도메인 서비스를 사용하여 모든 요청을 대량으로로드

그러나 내 테이블에는 여러 개의 외래 키가 포함되어 있으며 올바른 관련 데이터가 표에 표시되기를 원합니다 (가이드 에서처럼 키 값만 표시됨). 나는 이런 내 새로 만든 엔티티의 관계 추가하여이 문제를 해결 :

enter image description here

그리고 내 도메인 서비스 클래스는 다음과 같습니다

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)가 하나의 요청을 필요로하므로 오랜 시간이 걸리는 이유가 있습니다. 페이지를로드하면 피들러에서 다음과 같습니다 :이 전혀 허용

enter image description here

, 그것은, 하나에 모든 전화를 결합하는 방법해야하지 않고 동일한 테이블을로드 할 때 그렇습니다처럼 도메인 서비스를 통해

그래서 .. 많은 설명이있었습니다. 제 질문은 : 관련 데이터를 한 번에로드하거나 다른 방식으로 성능을 향상시킬 수있는 방법이 있습니까? 화면을로드하는 데 10 초 이상 걸리지 않아야합니다. 어떤 도움 또는 입력!의

답변

0

내 RIA 서비스 쿼리에 대한

덕분에 내가 집계를하고있어 경우에도 사용하지 않을에 비해 매우 빠르다. RuleEntryTest 엔티티를 사용하여 작성한 "가상 관계"(테이블 사이에 점선으로 나타낼 수 있음)를 사용하고있을 수도 있습니다.

왜 당신이 당신의 RIA 엔티티 만들기를 시작하기 전에 원래 RuleEntry 엔티티가 LightSwitch 모두 나라 & BaseUnit 관련이 없습니다?

필자는 무슨 일이 일어나고 있는지보기 위해 피들러를 사용하지 않았지만, 가상의 것보다 "실제"관계를 만들려고 노력했습니다. & 이것이 귀하의 RIA 엔터티의 성능에 도움이되는지보십시오.