EF - 从表中获取数据给出空值

Posted

技术标签:

【中文标题】EF - 从表中获取数据给出空值【英文标题】:EF - getting data from table gives null value 【发布时间】: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 查询是什么? 【参考方案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 值。

以上是关于EF - 从表中获取数据给出空值的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 仅从表中获取并非所有值都是空值的列

使用 laravel 模型获取数据时没有从表中获取结果

使用 python 和 mysql.connector 从表中获取数据

是否有任何其他选项可以从表中获取总计数和同一查询中列的不同计数?

如何从表中逐块获取数据?

H2 数据库,从表中获取数据的问题