diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj index ee2cb352c..bf5cda9dc 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 cb34fba3c..04c4c0cae 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() { + UnitSelectN.Init(); UnitOneToOneN2.Init(); UnitManyToManyUpdate.Init(); UnitManyToMay1231.Init(); diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UnitSelectN.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UnitSelectN.cs new file mode 100644 index 000000000..4b96e88ab --- /dev/null +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UnitSelectN.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + internal class UnitSelectN + { + public static void Init() + { + var db = NewUnitTest.Db; + db.CodeFirst.InitTables(); + db.DbMaintenance.TruncateTable(); + db.DbMaintenance.TruncateTable(); + db.DbMaintenance.TruncateTable(); + db.DbMaintenance.TruncateTable(); + db.Insertable(new B() { BId = 1, AId = 1, BName = "a" }).ExecuteCommand(); + var data=db.Queryable() + .LeftJoin((b, a) => b.AId == a.AId) + .LeftJoin((b, a, aa) => a.AId == aa.AId) + .LeftJoin((b, a, aa, bb) => bb.BId == b.BId) + .Select((b, a, aa, bb) => new + { + B =new B() { BId=b.BId, BName=b.BName, AId=a.AId} + }) + .ToList(); + if (data.First().B.BId != 1 && data.First().B.BName != "a") + { + throw new Exception("unit error"); + } + var data2 = db.Queryable() + .LeftJoin((b, a) => b.AId == a.AId) + .LeftJoin((b, a, aa) => a.AId == aa.AId) + .LeftJoin((b, a, aa, bb) => bb.BId == b.BId) + .Select((b, a, aa, bb) => new + { + B = new { BId = b.BId, BName = b.BName, AId = a.AId } + }) + .ToList(); + if (data2.First().B.BId != 1 && data2.First().B.BName != "a") + { + throw new Exception("unit error"); + } + + } + [SqlSugar.SugarTable("unita1")] + public class A + { + public int AId { get; set; } + public string AName { get; set; } + } + [SqlSugar.SugarTable("unitb1")] + public class B + { + public int AId { get; set; } + public int BId { get; set; } + public string BName { get; set; } + } + [SqlSugar.SugarTable("unitaa1")] + public class AA + { + public int AId { get; set; } + public int AAId { get; set; } + public string AAName { get; set; } + } + [SqlSugar.SugarTable("unitbb1")] + public class BB + { + public int BId { get; set; } + public int BBId { get; set; } + public string BBName { get; set; } + } + + public class ADTO + { + public int AId { get; set; } + public int AAId { get; set; } + public string AName { get; set; } + public string AAName { get; set; } + } + + public class BDTO + { + public int AId { get; set; } + public string AName { get; set; } + public int AAId { get; set; } + public string AAName { get; set; } + public int BId { get; set; } + public int BBId { get; set; } + public string BName { get; set; } + public string BBName { get; set; } + } + } +}