c# - 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 框架相当陌生,因此欢迎您提供任何帮助和建议。
解决方案
所以 EF Core 的行为没问题,但是 graphql 解析器没有正确设置。在重新访问我的 graphql 解析器之后,实际的方法完成了他们必须做的事情。
我非常感谢所有提供的输入,并且可以将其标记为已解决。
推荐阅读
- html - H1 额外的填充没有被移除
- swift - 如何在不进入应用程序的情况下从快速操作菜单复制到 UIPasteBoard?
- javascript - 我将如何以编程方式调用对象方法?像 MyObject.XVariable(//一些函数)
- java - Mockito 验证并复制被清除的数组
- javascript - 我将如何制作一个以当前日期开头的“ajax”日历扩展器
- java - java JPA - 使用限制api调用sql函数
- php - 如何根据国家/地区重定向
- dax - 在 DAX 查询中对表联合使用 SUMMARIZECOLUMNS
- jenkins - Jenkins 服务器与 bitbucket 云的集成
- python - 'HttpResponse' 类型对象的 Django 分页错误没有 len()