首页 > 解决方案 > Entity Framework Core 总是返回 null,除非使用 OrderBy?

问题描述

我一直在用 graphql.net 服务器、asp.net 核心、ef 核心和北风 mssql 数据库进行一些测试。尽管我在从数据库中获取数据时遇到了问题,但发生的情况是 EF Core 没有返回它应该返回的数据。

模型类的示例:

public partial class Categories
{        
    public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public string Description { get; set; }
    public byte[] Picture { get; set; }
    public ICollection<Products> Products { get; set; }
} 

很简单,顺便说一句,我一直在使用 db first 方法,这实际上是使用 ef core 的脚手架工具生成的。

我想要做的是,当我在 graphql 中查询一个没有参数的类别时,它会返回表中的第一个项目(如果我想查询任何其他项目,我会使用其他方法执行此操作,这是有效的)。

在我的 graphql 解析器中,当我查询一个字段时,在这种情况下是 a Category(此时我不想要类别列表),我通常会使用以下代码非常容易地做到这一点:

public async Task<Categories> GetOne(int CategoryID)
{
    Categories category =
    await _dbContext.Categories.FirstOrDefaultAsync(
    c => c.CategoryId.Equals(CategoryID));
    return category;
}

上面的代码给我返回了一个null,但真正奇怪的是下面的代码也返回了null:

Categories categories = await _dbContext.Categories
                                        .Where(c => c.CategoryId.Equals(CategoryID))
                                        .FirstOrDefaultAsync();

它工作的唯一场景,但不是预期的那样,因为它实际上返回了表中的第二个 ID,而我最后附加的任何内容都是FirstAsync, SingleAsync,甚至LastOrDefaultAsync结果始终是表中的第二行,使用代码片段:

Categories categories = await _dbContext.Categories
                                        .OrderBy(c => c.CategoryId.Equals(CategoryID))
                                        .FirstOrDefaultAsync();`

我对 Entity 框架相当陌生,因此欢迎您提供任何帮助和建议。

标签: c#sql-servergraphql

解决方案


所以 EF Core 的行为没问题,但是 graphql 解析器没有正确设置。在重新访问我的 graphql 解析器之后,实际的方法完成了他们必须做的事情。

我非常感谢所有提供的输入,并且可以将其标记为已解决。


推荐阅读