using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static OrmTest._4_JoinQuery;
namespace OrmTest
{
internal class _4_JoinQuery
{
public static void Init()
{
InitializeDatabase();
SyntaxSugar1();
SyntaxSugar2();
SyntaxSugar3();
}
///
/// 使用语法糖1进行联表查询。
/// Performs a Join query using Syntax Sugar 1.
///
/// 查询结果列表。The list of query results.
public static List SyntaxSugar1()
{
var db = DbHelper.GetNewDb();
var query = db.Queryable()
.LeftJoin((o, cus) => o.CustomId == cus.Id)
.LeftJoin((o, cus, oritem) => o.Id == oritem.OrderId)
.Where(o => o.Id == 1)
.Select((o, cus, oritem) => new ViewOrder2 { Id = o.Id,Name=o.Name, CustomName = cus.Name })
.ToList();
return query;
}
///
/// 使用语法糖2进行联表查询。
/// Performs a Join query using Syntax Sugar 2.
///
/// 查询结果列表。The list of query results.
public static List SyntaxSugar2()
{
var db = DbHelper.GetNewDb();
var rightQueryable = db.Queryable()
.LeftJoin((o, i) => o.Id == i.Id)
.Select(o => o);
var list = db.Queryable()
.LeftJoin(rightQueryable, (c, j) => c.CustomId == j.Id)
.Select(c => c)
.ToList();
return list;
}
///
/// 使用语法糖3进行联表查询。
/// Performs a Join query using Syntax Sugar 3.
///
/// 查询结果列表。The list of query results.
public static List SyntaxSugar3()
{
var db = DbHelper.GetNewDb();
var list = db.Queryable((o, i, c) => o.Id == i.OrderId && c.Id == o.CustomId)
.Select((o, i, c) => new ViewOrder2 { Id = o.Id, Name = o.Name, CustomName = c.Name })
.ToList();
return list;
}
static void InitializeDatabase()
{
// Initialize order data
// 初始化订单数据
var orders = new List
{
new Order { Id = 1, Name = "Order 1", CustomId = 1 },
new Order { Id = 2, Name = "Order 2", CustomId = 2 },
new Order { Id = 3, Name = "Order 3", CustomId = 1 },
};
// Initialize order details data
// 初始化订单详情数据
var orderDetails = new List
{
new OrderDetail { Id = 1, OrderId = 1 },
new OrderDetail { Id = 2, OrderId = 2 },
new OrderDetail { Id = 3, OrderId = 3 },
};
// Initialize customer data
// 初始化客户数据
var customers = new List
{
new Custom { Id = 1, Name = "Customer 1" },
new Custom { Id = 2, Name = "Customer 2" },
new Custom { Id = 3, Name = "Customer 3" },
};
// Get database connection
// 获取数据库连接
var db = DbHelper.GetNewDb();
// Initialize database tables and truncate data
// 初始化数据库表并清空数据
db.CodeFirst.InitTables();
db.DbMaintenance.TruncateTable();
// Insert data into tables
// 向表中插入数据
db.Insertable(orders).ExecuteCommand();
db.Insertable(orderDetails).ExecuteCommand();
db.Insertable(customers).ExecuteCommand();
}
///
/// 订单实体类。
/// Order entity class.
///
[SqlSugar.SugarTable("Order04")]
public class Order
{
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public string Name { get; set; }
public int CustomId { get; set; }
// 其他订单相关属性...
}
///
/// 订单详情实体类。
/// Order detail entity class.
///
[SqlSugar.SugarTable("OrderDetail04")]
public class OrderDetail
{
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public int OrderId { get; set; }
// 其他订单详情相关属性...
}
///
/// 客户实体类。
/// Customer entity class.
///
[SqlSugar.SugarTable("Custom04")]
public class Custom
{
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public string Name { get; set; }
// 其他客户相关属性...
}
///
/// 类1实体类。
/// Class1 entity class.
///
public class ViewOrder2
{
public int Id { get; set; }
public string Name { get; set; }
public string CustomName { get; set; }
// 其他类1相关属性...
}
}
}