【问题标题】:EF - getting data from table gives null valueEF - 从表中获取数据给出空值
【发布时间】:2021-11-29 17:17:03
【问题描述】:

我正在尝试使用实体框架从 MySQL 数据库中获取数据。

这是我的代码:

public IActionResult GetPersons() {
  using (_context) {
    var p = _context.Persons;
    return Ok(p);
  }
}

_context.Persons 在我的 DbContext 中定义如下:

public DbSet<Person> Persons { get; set; }

我可以在 MySQL 日志中看到,我的应用确实成功连接到服务器,并且上面的查询是正确的。

但是,当我添加 .FirstOfDefault 或其他 LINQ 方法时,查询会受到影响。

变量p 仍然是null,原因不明...

【问题讨论】:

  • _context.Persons; 的类型是什么,“失败”查询是什么??
  • public DbSet Persons { get;放; } 在 DbContext 中
  • 谢谢 - 查询失败?另请阅读How to create a Minimal, Complete, and Verifiable example
  • 什么意思?每次调用代码时,我都可以在服务器端看到以下查询 - “SELECT p.IdPerson, p.Created, p.CreatedBy, p.@ 987654336@, p.ModifiedBy, p.PersonLabel, p.PersonName FROM Persons AS p" - 查询在 mysql 控制台上给出了正确的结果。
  • 是的,但您是说.FirstOfDefault 失败,p 保持为null - that 查询是什么?

标签: mysql .net entity-framework


【解决方案1】:

您缺少 .ToList()

public IActionResult GetPersons() {
  using (_context) {
    var p = _context.Persons.ToList();
    return Ok(p);
  }
}

在此处查看基本信息:Querying Data

【讨论】:

  • 同理。 SQLNullValue 异常。我想知道这是否以某种方式连接到 mySQL - 在我使用 MS SQL 之前,它使用几乎相同的代码。
  • 你为 mySQL 使用了什么 NuGet 包?
  • MySql.Data.EntityFrameworkCore (8.0.22)
  • 非常感谢,因为在您发表评论后我设法解决了我的问题。我切换到替代 Pomelo 包,结果我得到了更精确的异常消息,我试图在模型的属性上强制转换一列(它是 Nullable DB 端)的 NULL 值。
猜你喜欢
  • 2020-10-08
  • 2018-04-27
  • 1970-01-01
  • 1970-01-01
  • 2018-08-07
  • 1970-01-01
  • 1970-01-01
  • 2012-02-03
  • 2021-01-30
相关资源
最近更新 更多