我需要从查询中返回每个学生都有作业的学生列表。
class Student {
public string Name{ get; set; }
public IEnumerable<Assignment> Assignments{ get; set; }
}
class Assignment {
public string Title { get; set; }
}
所以尝试创建两个查询然后使用 include/includemany 但我得到其他错误(字典中不存在给定的键“Id”)
var students = db.Query('Student')
.Select(...)
.Where()
var assignments= db.Query('Assignment')
.Select(...)
.Where()
var result = students.IncludeMany('Assignments', assignments).Get()
但这不起作用。如何使用 SQLKata 正确创建复杂/嵌套对象?
我假设您的示例已完成,但您应该在查询中添加主键和外键属性。 (它们不在您的课程中,所以我根据 sql kata 使用的约定添加了它们)
var students = db.Query("Student")
.Select("Id", "Name");
var assignments = db.Query("Assignment")
.Select("StudentId", "Title");
var result = students
.IncludeMany("Assignments", assignments)
.Get();
如果它们没有指定为 IncludeMany 方法的参数,SqlKata 将使用“Id”字段作为主键,“StudentId”字段作为关系中的外键。您可以将这些作为额外参数添加到 IncludeMany 方法。
var result = students
.IncludeMany("Assignments", assignments, "StudentId", "Id")
.Get();
请注意,目前 SqlKata 似乎不支持通用方法 Get<> GetAsync<>。
你应该使用外键