实体框架核心总是返回null,除非使用OrderBy?

时间:2019-05-15 12:26:16

标签: c# sql-server graphql

我一直在使用graphql.net服务器,asp.net核心,ef核心和northwind 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的scaffold工具生成的。

我想做的是,当我在graphql中查询没有参数的类别时,它返回我表中的第一项(如果我要查询其他任何项,我将使用其他方法来完成,这是可行的)。

在我的graphql解析器中,当我查询一个字段(在这种情况下为Category(此时我不想要类别列表)时,通常可以使用以下代码来做到这一点: / p>

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,最后加上的内容是FirstAsyncSingleAsync甚至是LastOrDefaultAsync的结果始终是表中的第二行,使用代码段:

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

我对Entity框架还很陌生,因此欢迎大家的帮助和建议。

1 个答案:

答案 0 :(得分:0)

因此EF Core的行为还可以,但是graphql解析器未正确设置。重新访问我的graphql解析器后,实际方法完成了他们必须要做的事情。

我非常感谢所有提供的信息,可以将其标记为已解决。