返回

SQLSugar构建关联查询,轻松驾驭复杂查询

后端

导航查询、反向导航查询、导航插入和导航更新:驾驭复杂查询的利器

对于数据库开发人员来说,导航查询和反向导航查询是不可或缺的工具,它们允许您轻松地跨实体关系遍历数据。SQLSugar 提供了强大的导航功能,使这些操作变得轻而易举。此外,导航插入和导航更新允许您同时修改多个实体,进一步简化了您的开发任务。

导航查询

导航查询使您可以从一个实体导航到另一个实体,具体取决于它们之间的关系。例如,如果您有一个 Order 实体和一个 OrderItem 实体,其中 Order 实体有一个 Items 属性,该属性包含所有相关的 OrderItem 实体,则可以执行以下查询:

var query = context.Queryable<Order>()
    .Include(o => o.Items);

该查询将从 Order 实体导航到 OrderItem 实体,将每个 Order 实体及其关联的 OrderItem 集合一起返回。

反向导航查询

反向导航查询使您可以从一个实体反向导航到另一个实体。继续前面的示例,如果您有一个 Customer 实体和一个 Order 实体,其中 Customer 实体有一个 Orders 属性,该属性包含所有相关的 Order 实体,则可以执行以下查询:

var query = context.Queryable<Customer>()
    .Include(c => c.Orders)
    .ThenInclude(o => o.Items);

此查询将从 Customer 实体反向导航到 Order 实体,然后从 Order 实体导航到 OrderItem 实体,将每个 Customer 实体及其关联的 Order 集合(以及每个 Order 实体的关联的 OrderItem 集合)一起返回。

导航插入

导航插入使您可以同时插入一个实体及其关联的实体。例如,如果您有一个 Order 实体和两个 OrderItem 实体,则可以执行以下插入操作:

var order = new Order();
order.Items.Add(new OrderItem());
order.Items.Add(new OrderItem());
context.Insertable(order).ExecuteCommand();

该操作将同时插入 Order 实体和两个 OrderItem 实体。

导航更新

导航更新使您可以同时更新一个实体及其关联的实体。继续前面的示例,如果您有一个 Order 实体和两个 OrderItem 实体,则可以执行以下更新操作:

var order = new Order();
order.Items.Add(new OrderItem());
order.Items.Add(new OrderItem());
context.Updateable(order).ExecuteCommand();

该操作将同时更新 Order 实体和两个 OrderItem 实体。

结论

SQLSugar 的导航查询、反向导航查询、导航插入和导航更新功能为数据库开发提供了强大的工具。它们使您可以轻松地遍历实体关系、插入和更新关联实体,从而提高代码的可读性、可维护性和开发效率。

常见问题解答

  • 什么是导航查询?
    • 导航查询是根据实体之间的关系,从一个实体导航到另一个实体的查询。
  • 什么是反向导航查询?
    • 反向导航查询是根据实体之间的关系,从一个实体导航到另一个实体的逆向查询。
  • 什么是导航插入?
    • 导航插入是同时插入一个实体及其关联实体的操作。
  • 什么是导航更新?
    • 导航更新是同时更新一个实体及其关联实体的操作。
  • 如何使用 SQLSugar 执行导航查询?
    • 您可以使用 Include()ThenInclude() 方法执行导航查询。