0

我正在开发一个 ASP.NET C# 应用程序,并且希望提高操作的性能。

我有一个按钮,当用户单击它时,我发送一个 Ajax 调用以从数据库中获取数据并显示数据。

数据库的架构是这样的:

数据库架构

我有一个国家列表,每个国家都有多个系列(人口、石油、水......),每个系列都有多年(每年都有一个值)。所以基本上它是每个国家多年来一系列的演变。

为了获取数据,我使用 AJAX 调用 Web 服务。该网络服务将一个系列名称作为输入,我需要输出该系列多年来每个国家/地区的数据。输出数据应该是一个 Javascript 对象,如下所示:

水= {“1990”:{“美国”:0.1,“加拿大”:0.3,“澳大利亚”:0.4},“1991”:{“美国”:0.1,“加拿大”:0.5}}

ajax 调用:

        $.ajax({
                type: "POST",
                url: "Service/WebService.asmx/GetData",
                dataType: "json",
                async: false,
                data: "{'Series':'" + Series+ "'}",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    mapValues = JSON.parse(data.d); 
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    alert(errorThrown);
                }
            });

该服务使用实体框架从数据库中读取。

var Context = new DataModel.DBEntities();
IEnumerable<YearClass> r = (from y in Context.Years
                                          where y.Series.Name == Variable
                                          select new YearClass
                                          {
                                              year = y.Name,
                                              value = y.Value,
                                              CountryCode = y.Series.Country.Code
                                          });

yearClass 是一个强类型类型,只是为了在这里使用它。

然后我遍历所有年份并通过连接字符串以匹配所需格式来构建 JSON。

然而这个过程需要很多时间,我需要找到一种方法来提高它的性能。

哪些部分可以改进?非常感谢任何提示。

4

1 回答 1

0

不要自己生成 JSON。一旦您构建了具有正确属性的对象图,请从控制器操作中将其作为JsonResult使用Json()函数返回。您还可以考虑使用第三方 JSON 序列化程序,例如JSON.net

于 2012-07-02T13:26:27.897 回答