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"); } var data3 = 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=b.BId, A=new ADTO() { AId=a.AId }, B = new BDTO{ BId = b.BId, BName = b.BName, AId = a.AId } }) .ToList(); if (data3.First().B.BId != 1 && data3.First().B.BName != "a"&& data3.First().b!=1) { 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; } } } }