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; + } + } +}