From 62bbe8954d1659bb4e4b8c9859b85a71768d4a2e Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 2 Jun 2019 15:18:32 +0800 Subject: [PATCH] Update demo --- .../SqlServerTest/Demo/Demo1_Queryable.cs | 29 ++++++++++++++++++- Src/Asp.Net/SqlServerTest/Models/Mapper.cs | 23 +++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs b/Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs index 64fabcc7c..fa82db4e7 100644 --- a/Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs +++ b/Src/Asp.Net/SqlServerTest/Demo/Demo1_Queryable.cs @@ -142,7 +142,12 @@ namespace OrmTest db.Insertable(new Tree() { Id = 2, Name = "root" }).ExecuteCommand(); db.Insertable(new Tree() { Id = 22, Name = "child3", ParentId = 2 }).ExecuteCommand(); - var list=db.Queryable() + // Same property name mapping,Both entities have parentId + var list = db.Queryable().Mapper(it => it.Parent, it => it.ParentId).ToList(); + + + //If both entities have parentId, I don't want to associate with parentId. + var list1 =db.Queryable() //parent=(select * from parent where id=it.parentid) .Mapper(it=>it.Parent,it=>it.ParentId, it=>it.Parent.Id) //Child=(select * from parent where ParentId=it.id) @@ -153,6 +158,28 @@ namespace OrmTest //one to many var list3 = db.Queryable().Mapper(it => it.Items, it => it.Items.First().OrderId).ToList(); + + //many to many + db.CodeFirst.InitTables(); + + db.Insertable(new A() { Name = "A" }).ExecuteCommand(); + db.Insertable(new B() { Name = "B" }).ExecuteCommand(); + db.Insertable(new ABMapping() { AId = 1, BId = 1 }).ExecuteCommand(); + + var list4 = db.Queryable() + .Mapper(it => it.A, it => it.AId) + .Mapper(it => it.B, it => it.BId).ToList(); + + //Manual mode + var result = db.Queryable().Take(10).Select().Mapper((itemModel, cache) => + { + var allItems = cache.Get(orderList => { + var allIds = orderList.Select(it => it.Id).ToList(); + return db.Queryable().Where(it => allIds.Contains(it.OrderId)).ToList();//Execute only once + }); + itemModel.Items = allItems.Where(it => it.OrderId==itemModel.Id).ToList();//Every time it's executed + }).ToList(); + Console.WriteLine("#### End Start ####"); } diff --git a/Src/Asp.Net/SqlServerTest/Models/Mapper.cs b/Src/Asp.Net/SqlServerTest/Models/Mapper.cs index a1402cfbc..8d7991d6c 100644 --- a/Src/Asp.Net/SqlServerTest/Models/Mapper.cs +++ b/Src/Asp.Net/SqlServerTest/Models/Mapper.cs @@ -28,4 +28,27 @@ namespace OrmTest [SugarColumn(IsIgnore = true)] public List Items { get; set; } } + public class ABMapping + { + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int AId { get; set; } + public int BId { get; set; } + [SugarColumn(IsIgnore = true)] + public A A { get; set; } + [SugarColumn(IsIgnore = true)] + public B B { get; set; } + + } + public class A + { + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + public string Name { get; set; } + } + public class B + { + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int Id { get; set; } + public string Name { get; set; } + } }