diff --git a/Src/Asp.Net/SqlServerTest/4_JoinQuery.cs b/Src/Asp.Net/SqlServerTest/4_JoinQuery.cs
new file mode 100644
index 000000000..38872153b
--- /dev/null
+++ b/Src/Asp.Net/SqlServerTest/4_JoinQuery.cs
@@ -0,0 +1,171 @@
+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相关属性...
+ }
+ }
+}
diff --git a/Src/Asp.Net/SqlServerTest/Program.cs b/Src/Asp.Net/SqlServerTest/Program.cs
index 3a5cd54eb..964f43970 100644
--- a/Src/Asp.Net/SqlServerTest/Program.cs
+++ b/Src/Asp.Net/SqlServerTest/Program.cs
@@ -11,7 +11,7 @@ namespace OrmTest
_1_CodeFirst.Init();
_2_DbFirst.Init();
_3_EasyQuery.Init();
-
+ _4_JoinQuery.Init();
Console.ReadKey();
}
}
diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj
index 5eef7ceda..4e7b4cef6 100644
--- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj
+++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj
@@ -66,6 +66,7 @@
+