SQLKata 使用 Include/IncludeMany 返回复杂对象

问题描述 投票:0回答:2

我需要从查询中返回每个学生都有作业的学生列表。

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-server .net-core sqlkata
2个回答
1
投票

我假设您的示例已完成,但您应该在查询中添加主键和外键属性。 (它们不在您的课程中,所以我根据 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<>。


-1
投票

你应该使用外键

看这个视频: https://www.youtube.com/watch?v=t8rF-R00c0I&t=307s

© www.soinside.com 2019 - 2024. All rights reserved.