我尝试使用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
}
]
课程架构
1条答案
按热度按时间idv4meu81#
正如@MarcGravell所暗示的,这实际上是模式中列名的问题,解决方案是使实体值名称与列名匹配。