首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有UDF -分页异常的Linq到SQL

带有UDF -分页异常的Linq到SQL
EN

Stack Overflow用户
提问于 2012-06-30 17:59:54
回答 2查看 186关注 0票数 0

日安。我在我的MS SQL 2008R2库和一些映射类"ApplicationGroupsResult“中得到了一些表结果

代码语言:javascript
复制
ALTER FUNCTION [dbo].[netsqlazman_ApplicationGroups] ()
RETURNS TABLE
AS RETURN
SELECT     dbo.[netsqlazman_ApplicationGroupsTable].*
FROM         dbo.[netsqlazman_ApplicationGroupsTable] INNER JOIN
                      dbo.[netsqlazman_Applications]() Applications ON dbo.[netsqlazman_ApplicationGroupsTable].ApplicationId = Applications.ApplicationId



[Function(Name="dbo.netsqlazman_ApplicationGroups", IsComposable=true)]
public IQueryable<ApplicationGroupsResult> ApplicationGroups()
{
return base.CreateMethodCallQuery<ApplicationGroupsResult>(this, (MethodInfo) MethodBase.GetCurrentMethod(), new object[0]);
}

现在我只想记录几张:

代码语言:javascript
复制
            var query = context.ApplicationGroups();

            totalRecordsCount = query.Count();

            query = string.IsNullOrWhiteSpace(sortBy)
                        ? query.OrderBy(x => x.ApplicationGroupId)
                        : query.OrderBy(sortBy);

            return query
                .Skip(pageNumber*queryRecordsCount)
                .Take(queryRecordsCount)
                .ToArray();

我得到了一个例外:“这个提供程序只支持顺序查询,返回包含所有标识列的实体或投影,其中查询是一个单表(非连接)查询,或者是一个不同的(除了互斥)或Union (不连接)操作。”

带有UDF的LinqToSQL支持分页吗?如果是这样,那我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-02 04:45:23

我在我使用的库中发现了问题-- DataContext。

代码语言:javascript
复制
[Provider(typeof(Sql2000Provider))]

因此,如果没有" distinct“,该查询就无法工作,因为在sql 2000中没有Row_number操作符,生成分页查询的唯一方法是使用distinct的技巧。在这种情况下,LINQ查询应该是怎样的。

代码语言:javascript
复制
return query
            .Distinct()
            .Skip(pageNumber*queryRecordsCount)
            .Take(queryRecordsCount)
            .ToArray();

我刚刚创建了自己的DataContext,问题解决了:

代码语言:javascript
复制
[Provider(typeof(Sql2008Provider))]
public sealed class AzManDataContext : NetSqlAzManStorageDataContext
{
    public AzManDataContext(IDbConnection connection) : base(connection)
    { }
}

附注:

问题是:“查询是单表(非联接)查询”。

MSSQL中的表结果函数像单个查询一样处理,因此在分页查询中使用它们是正确的。

票数 0
EN

Stack Overflow用户

发布于 2012-07-01 13:39:12

问题是:“查询是单表(非联接)查询”。

UDF中的查询对另一个表执行Inner Join。为了使Skip工作,必须有一个相当“稳定”的结果集,以确保它能够准确地选择块,而不是每次都提取一些随机数据。

顺便问一下,这个UDF仅仅是为了达到这个目的吗?它看起来可以很容易地以强类型的方式在LINQ中表达,所以我不得不想知道为什么你会希望它使用一个UDF?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11276376

复制
相关文章

相似问题

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