From 5b203e268c30c945c0bdf140465d98c504de07eb Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 5 Aug 2022 08:55:21 +0800 Subject: [PATCH] Add unit test --- .../SqlServerTest/SqlServerTest.csproj | 1 + Src/Asp.Net/SqlServerTest/UnitTest/Main.cs | 1 + .../SqlServerTest/UnitTest/UnitUpdateNavN3.cs | 95 +++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 Src/Asp.Net/SqlServerTest/UnitTest/UnitUpdateNavN3.cs diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj index d935ace7d..e2d42bbf1 100644 --- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj +++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj @@ -97,6 +97,7 @@ + diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs index b8ae45540..dbb7c5bd8 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs @@ -31,6 +31,7 @@ namespace OrmTest } public static void Init() { + UnitUpdateNavN3.Init(); UnitOneToOne12.Init(); UnitInsertNav3.Init(); UnitInsertNav2.Init(); diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UnitUpdateNavN3.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UnitUpdateNavN3.cs new file mode 100644 index 000000000..c625adca8 --- /dev/null +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UnitUpdateNavN3.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SqlSugar; + +namespace OrmTest +{ + public class UnitUpdateNavN3 + { + public static void Init() + { + var db = NewUnitTest.Db; + + db.CodeFirst.InitTables(typeof(ClassA), typeof(ClassB), typeof(ClassC)); + db.DbMaintenance.TruncateTable(); + + + //初始化数据 1对多-1对多 共三层 + ClassA a = new ClassA(); + a.AId = "a"; + + ClassB b = new ClassB(); + b.BId = "b"; + b.AId = a.AId; + a.B = new List(); + a.B.Add(b); + + ClassC c = new ClassC(); + c.CId = "c"; + c.BId = b.BId; + b.C = new List(); + b.C.Add(c); + + //导航插入三表数据 + db.InsertNav(a).Include(t => t.B).ThenInclude(t => t.C).ExecuteCommand(); + + //修改数据 修改b表id 修改c表对应b表id + b.BId = "bb"; + c.BId = "bb"; + c.CId = "cc"; + + + //导航更新三表数据 + db.UpdateNav(a).Include(t => t.B).ThenInclude(t => t.C).ExecuteCommand(); + + //正常情况C数据库中应该只有1条 如果是多条则说明三级表数据存在垃圾数据 + var count = db.Queryable().ToList(); + + + //清空表中数据 + db.DbMaintenance.DropTable("ClassA"); + db.DbMaintenance.DropTable("ClassB"); + db.DbMaintenance.DropTable("ClassC"); + Console.WriteLine($"第三级表中总数据条数:{count}"); + } + /// + /// 一级类 + /// + [SugarTable("tb_a")] + public class ClassA + { + [SugarColumn(IsPrimaryKey = true)] + public string AId { get; set; } + [Navigate(NavigateType.OneToMany, nameof(ClassB.AId))] + public List B { get; set; } + [SugarColumn(IsNullable = true)] + public DateTime? UpdateTime { get; set; } + } + /// + /// 二级类 + /// + [SugarTable("tb_b")] + public class ClassB + { + [SugarColumn(IsPrimaryKey = true)] + public string BId { get; set; } + public string AId { get; set; } + [Navigate(NavigateType.OneToMany, nameof(ClassC.BId))] + public List C { get; set; } + } + /// + /// 三级类 + /// + [SugarTable("tb_c")] + public class ClassC + { + [SugarColumn(IsPrimaryKey = true)] + public string CId { get; set; } + + public string BId { get; set; } + } + } +}