首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenAccessDomainService执行OQL查询非常慢

OpenAccessDomainService执行OQL查询非常慢
EN

Stack Overflow用户
提问于 2016-04-06 14:46:35
回答 1查看 68关注 0票数 0

我在OpenAccessDomainService中的OQL查询有很大问题。

我有Silverlight客户端和RIA (OpenAccessDomainService)的应用程序,我需要实现延迟加载方法。

例如,我创建了方法getAnimalsLazy(string stringQuery,int range,int页面),其中可以从过滤器、每页记录和页传递stringQuery。这种方法工作得很好,但速度非常慢。

为了比较它,我创建了getAnimals()方法,它速度如此之快,它在4秒内加载了15000条记录。当我运行getAnimalsLazy时,它将在2秒内加载25条记录。

我不知道我做错了什么,有人能帮我吗?

这是示例代码:

代码语言:javascript
复制
[EnableClientAccess()]
public partial class ZooDomainService : OpenAccessDomainService<Model.ZooDomainModel>
{
    public ZooDomainService() : base()
    {
    }


    /// <param name="stringQuery">eg. AND (r.type = "Elephant" OR r.type = "Monkey") ORDER BY r.id ASC</param>
    public IQueryable<Animals> getAnimalsLazy(string stringQuery, int range, int page)
    {
        stringQuery = "SELECT r FROM AnimalsExtent AS r WHERE true " + stringQuery;

        Database db = Database.Get("Connection");
        IObjectScope scope = db.GetObjectScope();
        Query<Animals> qry = scope.GetOqlQuery<Animals>(stringQuery);

        int toSkip = (page - 1) * range;
        qry.Skip = toSkip;
        qry.MaxResultCount = range;

        return qry.ExecuteEnumerable().AsQueryable<Animals>();
    }

    public IQueryable<Animals> getAnimals()
    {
        return this.DataContext.Animals;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-07 08:20:57

当我用this.DataContext.ExecuteQuery(this.DataContext.ExecuteQuery,queryString)重构this.DataContext.ExecuteQuery(queryString)时,我找到了解决问题的方法,一切都很好。

代码语言:javascript
复制
string stringQuery = "SELECT * FROM animals AS r WHERE true ORDER BY r.id ASC LIMIT 25 OFFSET 0";
return this.DataContext.ExecuteQuery<Animals>(stringQuery).AsQueryable();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36454577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档