首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带分页和where子句的IdentityUser表的MVC IdentityUser

带分页和where子句的IdentityUser表的MVC IdentityUser
EN

Stack Overflow用户
提问于 2016-08-24 18:33:19
回答 1查看 259关注 0票数 0

我想查询我的网站的用户.它们存储在AspNetUsers表中,并具有OhansonsUser对象中定义的额外字段,该对象继承于IdentityUser,如下所示:

代码语言:javascript
复制
public class OhansonsUser : IdentityUser<long, CustomUserLogin, CustomUserRole, CustomUserClaim>
{ 
....
}

我试图提出以下查询:

代码语言:javascript
复制
        var sql = @"
SELECT  *
 FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY Id ) AS RowNum, *
        FROM      AspNetUsers
        WHERE     Id > 2
      ) AS RowConstrainedResult
WHERE   RowNum >= 1
  AND RowNum < 20
ORDER BY RowNum
";
        var users = Global.OhansonsDbContext.Database.SqlQuery<IEnumerable<OhansonsUser>>(sql).ToList();

我得到了一个错误:“结果类型'System.Collections.Generic.IEnumerable`1OhansonsLib.OhansonsUser‘可能不是抽象的,必须包括一个默认构造函数。”

注意:它确实有一个默认的构造函数。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-24 18:46:22

您必须直接传递模型类型,而不是您期望的集合类型。然后尝试实例化该类型并根据该类型执行映射。因此会产生异常,因为接口不是具体类型,永远无法实例化。如果您查看文档,它将返回类型DbRawSqlQuery<TElement>,它本身实现了IEnumerable<TElement>

顺便说一下,您还可以使用SkipTake直接使用Lambdas实现分页。示例(假设DbContext上的DbContext被命名为Users)。

代码语言:javascript
复制
int pageSize = 20, pageIndex = 0;
var users = OhansonsDbContext.Users.OrderBy(user => user.Id).Skip(pageSize * pageIndex).Take(pageSize).ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39130661

复制
相关文章

相似问题

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