.net Dapper查询“QueryAsync”返回空列

wztqucjr  于 2022-12-20  发布在  .NET
关注(0)|答案(1)|浏览(276)

我尝试使用dapper和MySQL存储过程返回实体列表,但由于某种原因,它返回的数据为空值。它返回实体列表,但只显示它们的ID -- CourseName和HoleLayouts总是空值。这是一个简单的查询,这就是为什么它让我感到非常困惑。它还适用于不同的实体/数据库表。我将course_name的列更改为VARCHAR类型(255),因为最初它是VARCHAR(45),这没有什么区别。即使使用调试,我也可以通过堆栈跟踪看到课程名称通过存储库return语句为空,而不是它们的id。
我将使用下面的代码来尝试并帮助进一步解释。

实体

public class Course
{
    public int Id { get; set; }
    public string CourseName { get; set; } = null!;
    public ICollection<HoleLayout> HoleLayouts { get; set; } = null!;
}

存储库/查询

public async Task<IEnumerable<Course>> FindAllAsync()
    { 
        using var connection = _dataAccessor.CreateConnection();

        var courses = await connection.QueryAsync<Course>("GetAllCourses",
            commandType: CommandType.StoredProcedure);

        return courses;
    }

存储过程

create
    definer = root@localhost procedure GetAllCourses()
BEGIN
    SELECT * FROM courses;
END;

JSON响应

[
    {
        "id": 1,
        "courseName": null,
        "holeLayouts": null
    }
]

课程架构

idv4meu8

idv4meu81#

正如@MarcGravell所暗示的,这实际上是模式中列名的问题,解决方案是使实体值名称与列名匹配。

相关问题