sql-server - SQLKata 使用 Include/IncludeMany 返回复杂对象
问题描述
我需要从查询中返回每个学生都有作业的学生列表。
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<> 上的这一点。
推荐阅读
- ruby-on-rails - 带有自定义标头的 Rails Net::HTTP 表单数据
- c# - 为什么 swaggerUI 不能显示方法参数?
- ruby - 如何消除代码中不相关的输出?
- json - 选择谓词后的第一个 JSON 结果
- python - 如何在 Python 中为字符串添加缺少的右括号?
- docker - 如何在docker中重启rabbitmq
- firebase - 如何使用具有 Null 安全性的 FlutterFire Firestore 和 Flutter 2.0 从 Firebase 获取数据
- python-3.x - Linux Ubuntu 如何从 python eclipse anaconda 启动标准应用程序 scribus
- r - PyCharm R 插件:如何清除控制台?
- active-directory - 监视 Active Directory 用户更改的最佳方法是什么?