0

我需要将来自SQL Server数据库的一些数据分组,并且由于LightSwitch不支持该开箱即用,我根据Eric使用域服务Erhardt的guideLightSwitch - 使用域名服务将所有请求批量加载到一个请求

但是我的表格包含几个外键,当然我希望在表格中显示正确的相关数据(就像在指南中做的那样只会显示关键值)。我解决了这个通过添加这样对我的新创建实体的关系:

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会自动加载自动完成框,但它需要很长时间。使用两列需要5-10秒来加载一个页面......并且我还有10个列我还没有实现。

花费这么长时间的原因是因为每个相关数据(每个Country和BaseField)都需要一个请求。加载页面看起来像这样的小提琴手:

enter image description here

这是不能接受的话,那应该是所有这些电话合并为一的方式,就像它加载同桌没有去的时候呢通过域服务。

所以..这是很多解释,我的问题是:有什么办法可以使所有相关数据一次加载或通过任何其他方式提高性能?它不应该花10+秒来加载一个屏幕。

感谢任何帮助或输入!小号

回答

0

我RIA服务查询是非常快的,与不使用它们,甚至当我在做的聚集。这可能是因为您使用RuleEntryTest实体创建的“虚拟关系”(您可以通过表格之间的虚线指出)。

为什么在你开始创建RIA实体原来的RuleEntry实体不相关的两个国家 & 的BaseUnit LightSwitch中?

我还没有使用Fiddler来查看发生了什么,但我会尝试创建“真实”关系而不是“虚拟”关系,&看看是否有助于您的RIA实体的表现。