From 9712524265ffa9c714b94ee8d177cea33817d084 Mon Sep 17 00:00:00 2001
From: sunkaixuan <610262374@qq.com>
Date: Fri, 15 Dec 2023 18:52:23 +0800
Subject: [PATCH] Add user test case
---
.../UserTestCases/UnitTest/Main.cs | 1 +
.../UserTestCases/UnitTest/Unitadfadsfa.cs | 240 ++++++++++++++++++
.../UnitTest/Unitasf1/DemoSqlFunction.cs | 66 +++++
3 files changed, 307 insertions(+)
create mode 100644 Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Unitadfadsfa.cs
create mode 100644 Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Unitasf1/DemoSqlFunction.cs
diff --git a/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Main.cs b/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Main.cs
index 9f86e35d2..9f434156d 100644
--- a/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Main.cs
+++ b/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Main.cs
@@ -32,6 +32,7 @@ namespace OrmTest
}
public static void Init()
{
+ UnitaadfafxSubToList.Init();
UnitGridSave2.Init();
Unitdfafa11.Init();
UnitSelectN.Init();
diff --git a/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Unitadfadsfa.cs b/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Unitadfadsfa.cs
new file mode 100644
index 000000000..c7e1b6f2e
--- /dev/null
+++ b/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Unitadfadsfa.cs
@@ -0,0 +1,240 @@
+using SqlSugar;
+using SqlSugarCoreDemo.Demo;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+
+namespace OrmTest
+{
+ internal class UnitaadfafxSubToList
+ {
+ ///
+ /// 初始化方法,包含各种查询操作的演示
+ /// Initialization method containing demonstrations of various query operations
+ ///
+ public static void Init()
+ {
+ //创建表并插入一条记录
+ //Create table and insert a record
+ CreateTable();
+
+ //参数化测试
+ QuerySubTest();
+ //// 查询所有学生信息
+ //// Query all student records
+ //GetAllStudents();
+
+ //// 查询学生总数
+ //// Get the total count of students
+ //GetStudentCount();
+
+ //// 按条件查询学生信息
+ //// Query student records based on conditions
+ //GetStudentsByCondition();
+
+ //// 模糊查询学生信息(名字包含"jack"的学生)
+ //// Fuzzy search for student records (students with names containing "jack")
+ //GetStudentsByName("jack");
+
+ //// 根据学生ID查询单个学生
+ //// Query a single student by student ID
+ //GetStudentById(1);
+
+ //// 获取Student03表中的最大Id
+ //// Get the maximum ID from the Student03 table
+ //GetMaxStudentId();
+
+ //// 简单排序(按照Id降序排序)
+ //// Simple sorting (sorting by Id in descending order)
+ //GetStudentsOrderedByIdDesc();
+
+ //// 查询学生姓名列表
+ //// Query the list of student names
+ //GetStudentNames();
+ }
+
+ ///
+ /// 创建表并插入一条记录
+ /// Create table and insert a record
+ ///
+ private static void CreateTable()
+ {
+ SqlSugarClient db = NewUnitTest.Db;
+
+ db.CodeFirst.InitTables();
+ db.DbMaintenance.TruncateTable();
+ var r = Enumerable.Range(1, 10000);
+ var stList = new List();
+ for (int i = 0; i < 10000; i++)
+ {
+ var tempStu = new Student03()
+ {
+ Name = "name" + SnowFlakeSingle.Instance.NextId(),
+ Id = i,
+ CreateTime = DateTime.Now,
+ };
+ stList.Add(tempStu);
+ }
+ db.Insertable(stList).ExecuteCommand();
+ }
+
+ ///
+ /// 子查询测试
+ /// Query all student records
+ ///
+ private static void QuerySubTest()
+ {
+ SqlSugarClient db = NewUnitTest.Db;
+ var r = db.Queryable().Take(3).Where(x => x.Id > 4000).Select(x => new
+ {
+ r = SqlFunc.Subqueryable().OrderBy(x => x.Name).First(x => new Student03 {
+ CreateTime= x.CreateTime
+ }, true),
+
+ }).ToList();
+ }
+
+ ///
+ /// 参数化测试
+ /// Query all student records
+ ///
+ private static void MyArrayParmeterTest()
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+ var na = "1";
+ var idList = Enumerable.Range(0, 10000).ToList();
+ var students = db.Queryable().Where(x => DemoSqlFunction.MyContainsArrayUseSqlParameters(idList, x.Id) && x.Name.StartsWith(na)).ToList();
+ // 处理查询结果
+ // Process the query results
+ }
+
+ ///
+ /// 查询所有学生信息
+ /// Query all student records
+ ///
+ private static void GetAllStudents()
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+ var students = db.Queryable().ToList();
+ // 处理查询结果
+ // Process the query results
+ }
+
+ ///
+ /// 查询学生总数
+ /// Get the total count of students
+ ///
+ private static void GetStudentCount()
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+ var count = db.Queryable().Count();
+ // 处理查询结果
+ // Process the query results
+ }
+
+ ///
+ /// 按条件查询学生信息
+ /// Query student records based on conditions
+ ///
+ private static void GetStudentsByCondition()
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+
+ // 查询name字段不为null的学生
+ // Query students where the 'name' field is not null
+ var studentsWithNameNotNull = db.Queryable().Where(it => it.Name != null).ToList();
+
+ // 查询name字段为null的学生
+ // Query students where the 'name' field is null
+ var studentsWithNameNull = db.Queryable().Where(it => it.Name == null).ToList();
+
+ // 查询name字段不为空的学生
+ // Query students where the 'name' field is not empty
+ var studentsWithNameNotEmpty = db.Queryable().Where(it => it.Name != "").ToList();
+
+ // 多条件查询
+ // Query students with multiple conditions
+ var studentsWithMultipleConditions = db.Queryable().Where(it => it.Id > 10 && it.Name == "a").ToList();
+
+ // 动态OR查询
+ // Dynamic OR query
+ var exp = Expressionable.Create();
+ exp.OrIF(true, it => it.Id == 1);
+ exp.Or(it => it.Name.Contains("jack"));
+ var studentsWithDynamicOr = db.Queryable().Where(exp.ToExpression()).ToList();
+
+ }
+
+ ///
+ /// 模糊查询学生信息
+ /// Fuzzy search for student records
+ ///
+ private static void GetStudentsByName(string keyword)
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+ var students = db.Queryable().Where(it => it.Name.Contains(keyword)).ToList();
+ // 处理查询结果
+ // Process the query results
+ }
+
+ ///
+ /// 根据学生ID查询单个学生
+ /// Query a single student by student ID
+ ///
+ private static void GetStudentById(int id)
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+ var student = db.Queryable().Single(it => it.Id == id);
+ // 处理查询结果
+ // Process the query results
+ }
+
+ ///
+ /// 获取Student03表中的最大Id
+ /// Get the maximum ID from the Student03 table
+ ///
+ private static void GetMaxStudentId()
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+ var maxId = db.Queryable().Max(it => it.Id);
+ // 处理查询结果
+ // Process the query results
+ }
+
+ ///
+ /// 简单排序(按照Id降序排序)
+ /// Simple sorting (sorting by Id in descending order)
+ ///
+ private static void GetStudentsOrderedByIdDesc()
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+ var students = db.Queryable().OrderBy(sc => sc.Id, OrderByType.Desc).ToList();
+ // 处理查询结果
+ // Process the query results
+ }
+
+ ///
+ /// 查询学生姓名列表
+ /// Query the list of student names
+ ///
+ private static void GetStudentNames()
+ {
+ SqlSugarClient db = DbHelper.GetNewDb();
+ var studentNames = db.Queryable().Select(it => it.Name).ToList();
+ // 处理查询结果
+ // Process the query results
+ }
+
+ public class Student03
+ {
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
+ public int Id { get; set; }
+ public string Name { get; set; }
+ public DateTime CreateTime { get; set; }
+ }
+ }
+}
+
diff --git a/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Unitasf1/DemoSqlFunction.cs b/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Unitasf1/DemoSqlFunction.cs
new file mode 100644
index 000000000..e6f658aed
--- /dev/null
+++ b/Src/Asp.NetCore2/SqlSeverTest/UserTestCases/UnitTest/Unitasf1/DemoSqlFunction.cs
@@ -0,0 +1,66 @@
+using SqlSugar;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Data;
+using SugarDbType = SqlSugar.DbType;
+
+namespace SqlSugarCoreDemo.Demo
+{
+ public class DemoSqlFunction
+ {
+ public static bool MyContainsArrayUseSqlParameters(List thisValue, object InField)
+ {
+ //这里不能写任何实现代码,需要在上面的配置中实现
+ throw new NotSupportedException("Can only be used in expressions");
+ }
+
+ private static List _SqlFuncExternals;
+ public static List SqlFuncExternals()
+ {
+ if (_SqlFuncExternals != null)
+ {
+ return _SqlFuncExternals;
+ }
+ var expMethods = new List
+ {
+ new SqlFuncExternal()
+ {
+ UniqueMethodName = "MyContainsArrayUseSqlParameters",
+ MethodValue = (expInfo, dbType, expContext) =>
+ {
+ if (dbType == SugarDbType.SqlServer)
+ {
+ var inValueIEnumerable = (IEnumerable)expInfo.Args[0].MemberValue;
+ var inValueHashCode=inValueIEnumerable.GetHashCode();
+
+ var parp=expContext.Parameters.First(x=>x.Value.GetHashCode()==inValueHashCode);
+
+ var tempDt = new DataTable();
+ tempDt.Columns.Add("Value", typeof(long));
+ foreach (var item in inValueIEnumerable)
+ {
+ var r = tempDt.NewRow();
+ r["Value"] = item;
+ tempDt.Rows.Add(r);
+ }
+ //表结构变量
+ parp.TypeName="dbo.Long_Table";
+
+ parp.Value=tempDt;
+
+ return $"{expInfo.Args[1].MemberName} IN (SELECT Value FROM {parp.ParameterName})";
+ }
+ else
+ throw new Exception("未实现");
+ }
+ }
+ };
+
+ return expMethods;
+ }
+ }
+}