首页 > 解决方案 > 在 .NET Core 2.1 中工作的 EF Linq 查询在 .NET Core 3.1 中不起作用

问题描述

最初在我们的后端使用了这个 EF Linq 查询

return _dbContext.Users.Select(u => new AuthUser
            {
                Email = u.Email,
                Role = u.Role,
            }).FirstOrDefaultAsync(e => e.Email.Equals(email, StringComparison.OrdinalIgnoreCase));

但是,禁用隐式客户端执行意味着该查询无法再正确翻译并引发运行时错误。

异常消息和另一个 SO 答案说要在查询中添加调用ToListAsync()以强制 ICE。我已经尝试过这样做,但现在我得到了编译器错误,因为返回类型被搞砸了,因为我需要等待任务来获取我可以操作的列表。这意味着我需要返回一个我没有做的任务。

这就是我现在所拥有的,它在返回类型上给了我一个编译错误。

public async Task<AuthUser> GetAuthUser(string email)
        {     
            var users = await _dbContext.Users.ToListAsync();
                
            return  users.Select(u => new AuthUser
            {
                Email = u.Email,
                Role = u.Role,
            }).FirstOrDefault(e => e.Email.Equals(email, StringComparison.OrdinalIgnoreCase));
            
            
        }

标签: c#entity-frameworkasp.net-core

解决方案


推荐阅读