diff --git a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite index 80f2adcdd..7cb75676e 100644 Binary files a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite and b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite differ diff --git a/Src/Asp.Net/SqliteTest/SqliteTest.csproj b/Src/Asp.Net/SqliteTest/SqliteTest.csproj index 7724f0ef5..2dea3fe8f 100644 --- a/Src/Asp.Net/SqliteTest/SqliteTest.csproj +++ b/Src/Asp.Net/SqliteTest/SqliteTest.csproj @@ -77,6 +77,11 @@ + + + + + @@ -99,6 +104,7 @@ + diff --git a/Src/Asp.Net/SqliteTest/UnitTest/Main.cs b/Src/Asp.Net/SqliteTest/UnitTest/Main.cs index 26475559b..d3c482337 100644 --- a/Src/Asp.Net/SqliteTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqliteTest/UnitTest/Main.cs @@ -31,6 +31,7 @@ namespace OrmTest } public static void Init() { + UnitNavUpdatee12.Init(); UnitFilterdafa.Init(); UInsert3.Init(); USaveable.Init(); diff --git a/Src/Asp.Net/SqliteTest/UnitTest/Models/Book.cs b/Src/Asp.Net/SqliteTest/UnitTest/Models/Book.cs new file mode 100644 index 000000000..f9885c02e --- /dev/null +++ b/Src/Asp.Net/SqliteTest/UnitTest/Models/Book.cs @@ -0,0 +1,18 @@ +using SqlSugar; +using System.Security.Principal; + +namespace Test.Model +{ + [SugarTable("BookA01")] + public class Book + { + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] + public int? Id { get; set; } + + [SugarColumn(ColumnName = "Name")] + public string Name { get; set; } + + [SugarColumn(ColumnName = "PId")] + public int? PId { get; set; } + } +} diff --git a/Src/Asp.Net/SqliteTest/UnitTest/Models/Playground.cs b/Src/Asp.Net/SqliteTest/UnitTest/Models/Playground.cs new file mode 100644 index 000000000..ff2405bd3 --- /dev/null +++ b/Src/Asp.Net/SqliteTest/UnitTest/Models/Playground.cs @@ -0,0 +1,18 @@ +using SqlSugar; +using System.Security.Principal; + +namespace Test.Model +{ + [SugarTable("PlaygroundA01")] + public class Playground + { + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] + public int? Id { get; set; } + + [SugarColumn(ColumnName = "Name")] + public string Name { get; set; } + + [SugarColumn(ColumnName = "PId")] + public int? PId { get; set; } + } +} diff --git a/Src/Asp.Net/SqliteTest/UnitTest/Models/Room.cs b/Src/Asp.Net/SqliteTest/UnitTest/Models/Room.cs new file mode 100644 index 000000000..1321eb9db --- /dev/null +++ b/Src/Asp.Net/SqliteTest/UnitTest/Models/Room.cs @@ -0,0 +1,18 @@ +using SqlSugar; +using System.Security.Principal; + +namespace Test.Model +{ + [SugarTable("RoomA01")] + public class Room + { + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] + public int? Id { get; set; } + + [SugarColumn(ColumnName = "Name")] + public string Name { get; set; } + + [SugarColumn(ColumnName = "PId")] + public int? PId { get; set; } + } +} diff --git a/Src/Asp.Net/SqliteTest/UnitTest/Models/School.cs b/Src/Asp.Net/SqliteTest/UnitTest/Models/School.cs new file mode 100644 index 000000000..76a25f42c --- /dev/null +++ b/Src/Asp.Net/SqliteTest/UnitTest/Models/School.cs @@ -0,0 +1,25 @@ +using SqlSugar; +using System.Collections.Generic; +using System.Security.Principal; + +namespace Test.Model +{ + [SugarTable("SchoolA01")] + public class School + { + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] + public int? Id { get; set; } + + [SugarColumn(ColumnName = "Name")] + public string Name { get; set; } + + [SugarColumn(ColumnName = "PId")] + public int? PId { get; set; } + + [Navigate(NavigateType.OneToMany, nameof(Room.PId))] + public List Rooms { get; set; } + + [Navigate(NavigateType.OneToMany, nameof(Playground.PId))] + public List Playgrounds { get; set; } + } +} diff --git a/Src/Asp.Net/SqliteTest/UnitTest/Models/Student.cs b/Src/Asp.Net/SqliteTest/UnitTest/Models/Student.cs new file mode 100644 index 000000000..c40c920eb --- /dev/null +++ b/Src/Asp.Net/SqliteTest/UnitTest/Models/Student.cs @@ -0,0 +1,24 @@ +using SqlSugar; +using System.Collections.Generic; + +namespace Test.Model +{ + [SugarTable("StudentA01")] + public class Student + { + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)] + public int? Id { get; set; } + + [SugarColumn(ColumnName = "Name")] + public string Name { get; set; } + + [SugarColumn(ColumnName = "Age")] + public string Age { get; set; } + + [Navigate(NavigateType.OneToMany, nameof(Book.PId))] + public List Books { get; set; } + + [Navigate(NavigateType.OneToMany, nameof(School.PId))] + public List Schools { get; set; } + } +} diff --git a/Src/Asp.Net/SqliteTest/UnitTest/UnitNavUpdatee12.cs b/Src/Asp.Net/SqliteTest/UnitTest/UnitNavUpdatee12.cs new file mode 100644 index 000000000..d3cbab9fa --- /dev/null +++ b/Src/Asp.Net/SqliteTest/UnitTest/UnitNavUpdatee12.cs @@ -0,0 +1,99 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.ComponentModel.Design; +using System.Linq; +using System.Net.Http.Headers; +using System.Text; +using System.Threading.Tasks; +using Test.Model; +namespace OrmTest +{ + public class UnitNavUpdatee12 + { + public static void Init() + { + var db = NewUnitTest.Db; + db.CodeFirst.InitTables(); + + Demo1(db); + Demo2(db); + } + + private static void Demo1(SqlSugarClient db) + { + db.DbMaintenance.TruncateTable(); + db.InsertNav(new Student() + { + Age = "11", + Name = "a", + Books = new List() { new Book() { Name = "book" } }, + Schools = new List() { + new School(){ + Name="学校", + Playgrounds=new List() + { + new Playground(){ Name="学校GR"} + + } , + Rooms=new List(){ + new Room() { Name= "学校ROOM" } } } + + } + + }) + .Include(s => s.Books) + // .Include(s => s.Schools) + .Include(s => s.Schools).ThenInclude(sc => sc.Rooms) + .Include(s => s.Schools).ThenInclude(sc => sc.Playgrounds) + .ExecuteCommand(); + var data = db.Queryable() + .Includes(s => s.Books) + .Includes(s => s.Schools, s => s.Rooms) + .Includes(s => s.Schools, s => s.Playgrounds) + .ToList(); + if (data.Count != 1 || data.First().Schools.Count != 1 || data.First().Schools.First().Rooms.Count() != 1 || data.First().Schools.First().Playgrounds.Count() != 1) + { + throw new Exception("unit error"); + } + } + private static void Demo2(SqlSugarClient db) + { + db.DbMaintenance.TruncateTable(); + db.InsertNav(new Student() + { + Age = "11", + Name = "a", + Books = new List() { new Book() { Name = "book" } }, + Schools = new List() { + new School(){ + Name="学校", + Playgrounds=new List() + { + new Playground(){ Name="学校GR"} + + } , + Rooms=new List(){ + new Room() { Name= "学校ROOM" } } } + + } + + }) + + // .Include(s => s.Schools) + .Include(s => s.Schools).ThenInclude(sc => sc.Rooms) + .Include(s => s.Schools).ThenInclude(sc => sc.Playgrounds) + .Include(s => s.Books) + .ExecuteCommand(); + var data = db.Queryable() + .Includes(s => s.Books) + .Includes(s => s.Schools, s => s.Rooms) + .Includes(s => s.Schools, s => s.Playgrounds) + .ToList(); + if (data.Count != 1 || data.First().Schools.Count != 1 || data.First().Schools.First().Rooms.Count() != 1 || data.First().Schools.First().Playgrounds.Count() != 1) + { + throw new Exception("unit error"); + } + } + } +}