【问题标题】:SQLKata return complex object with Include/IncludeManySQLKata 使用 Include/IncludeMany 返回复杂对象
【发布时间】:2020-11-17 19:17:53
【问题描述】:

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

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


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多