From f0cffe712b5f7955d27bd968cd141cf88e78f995 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 4 Jun 2019 12:36:18 +0800 Subject: [PATCH] Update demo --- Src/Asp.Net/MySqlTest/Config.cs | 20 +- .../MySqlTest/Demo/Demo0_SqlSugarClient.cs | 185 +++++++++-- Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs | 42 ++- .../MySqlTest/Demo/Demo2_Updateable.cs | 12 +- .../MySqlTest/Demo/Demo3_Insertable.cs | 18 +- .../MySqlTest/Demo/Demo4_Deleteable.cs | 10 +- .../MySqlTest/Demo/Demo5_SqlQueryable.cs | 8 +- Src/Asp.Net/MySqlTest/Demo/Demo6_Queue.cs | 2 +- Src/Asp.Net/MySqlTest/Demo/Demo7_Ado.cs | 57 ++++ Src/Asp.Net/MySqlTest/Demo/Demo8_Saveable.cs | 48 +++ .../MySqlTest/Demo/Demo9_EntityMain.cs | 46 +++ Src/Asp.Net/MySqlTest/Demo/DemoA_DbMain.cs | 42 +++ Src/Asp.Net/MySqlTest/Demo/DemoB_Aop.cs | 68 ++++ Src/Asp.Net/MySqlTest/Demo/DemoD_DbFirst.cs | 2 +- Src/Asp.Net/MySqlTest/Demo/DemoE_CodeFirst.cs | 6 +- Src/Asp.Net/MySqlTest/Demo/DemoF_Utilities.cs | 46 +++ .../MySqlTest/Demo/DemoG_SimpleClient.cs | 36 ++ .../MySqlTest/Demo/Democ_GobalFilter.cs | 4 +- Src/Asp.Net/MySqlTest/MySqlTest.csproj | 7 + Src/Asp.Net/MySqlTest/Program.cs | 22 +- Src/Asp.Net/MySqlTest/UnitTest/Main.cs | 8 +- Src/Asp.Net/MySqlTest/UnitTest/UAdo.cs | 4 +- Src/Asp.Net/MySqlTest/UnitTest/UCodeFirst.cs | 3 +- Src/Asp.Net/MySqlTest/UnitTest/UJson.cs | 18 +- Src/Asp.Net/MySqlTest/UnitTest/UQueryable.cs | 311 +++++++++++++++++- Src/Asp.Net/MySqlTest/UnitTest/UThread.cs | 8 +- Src/Asp.Net/MySqlTest/UnitTest/UThread3.cs | 8 +- Src/Asp.Net/MySqlTest/UnitTest/UValidate.cs | 2 +- Src/Asp.Net/MySqlTest/UnitTest/Updateable.cs | 133 +++++++- 29 files changed, 1074 insertions(+), 102 deletions(-) create mode 100644 Src/Asp.Net/MySqlTest/Demo/Demo7_Ado.cs create mode 100644 Src/Asp.Net/MySqlTest/Demo/Demo8_Saveable.cs create mode 100644 Src/Asp.Net/MySqlTest/Demo/Demo9_EntityMain.cs create mode 100644 Src/Asp.Net/MySqlTest/Demo/DemoA_DbMain.cs create mode 100644 Src/Asp.Net/MySqlTest/Demo/DemoB_Aop.cs create mode 100644 Src/Asp.Net/MySqlTest/Demo/DemoF_Utilities.cs create mode 100644 Src/Asp.Net/MySqlTest/Demo/DemoG_SimpleClient.cs diff --git a/Src/Asp.Net/MySqlTest/Config.cs b/Src/Asp.Net/MySqlTest/Config.cs index 48e302503..584e9a85f 100644 --- a/Src/Asp.Net/MySqlTest/Config.cs +++ b/Src/Asp.Net/MySqlTest/Config.cs @@ -6,10 +6,26 @@ using System.Threading.Tasks; namespace OrmTest { + /// + /// Setting up the database name does not require you to create the database + /// 设置好数据库名不需要你去手动建库 + /// public class Config { + /// + /// Account have permission to create database + /// 用有建库权限的数据库账号 + /// public static string ConnectionString = "server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=haosql"; - public static string ConnectionString2 = "server=localhost;Database=SQLSUGAR4XTEST;Uid=root;Pwd=haosql"; - public static string ConnectionString3 = "server=localhost;Database=sqlsugar4xtest;Uid=root;Pwd=haosql"; + /// + /// Account have permission to create database + /// 用有建库权限的数据库账号 + /// + public static string ConnectionString2 = "server=localhost;Database=SqlSugar4xTest2;Uid=root;Pwd=haosql"; + /// + /// Account have permission to create database + /// 用有建库权限的数据库账号 + /// + public static string ConnectionString3 = "server=localhost;Database=SqlSugar4xTest3;Uid=root;Pwd=haosql"; } } diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo0_SqlSugarClient.cs b/Src/Asp.Net/MySqlTest/Demo/Demo0_SqlSugarClient.cs index d09043dde..da891e5e5 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo0_SqlSugarClient.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo0_SqlSugarClient.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; +using System.Data.Linq.Mapping; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -17,7 +17,34 @@ namespace OrmTest DbContext();//Optimizing SqlSugarClient usage SingletonPattern();//Singleten Pattern DistributedTransactionExample(); - CustomAttribute(); + MasterSlave();//Read-write separation + CustomAttribute(); + } + + private static void MasterSlave() + { + Console.WriteLine(""); + Console.WriteLine("#### MasterSlave Start ####"); + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() + { + ConnectionString = Config.ConnectionString,//Master Connection + DbType = DbType.SqlServer, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true, + SlaveConnectionConfigs = new List() { + new SlaveConnectionConfig() { HitRate=10, ConnectionString=Config.ConnectionString2 } , + new SlaveConnectionConfig() { HitRate=10, ConnectionString=Config.ConnectionString2 } + } + }); + db.Aop.OnLogExecuted = (s, p) => + { + Console.WriteLine(db.Ado.Connection.ConnectionString); + }; + Console.WriteLine("Master:"); + db.Insertable(new Order() { Name = "abc", CustomId = 1, CreateTime = DateTime.Now }).ExecuteCommand(); + Console.WriteLine("Slave:"); + db.Queryable().First(); + Console.WriteLine("#### MasterSlave End ####"); } private static void SqlSugarClient() @@ -26,7 +53,7 @@ namespace OrmTest Console.WriteLine("#### SqlSugarClient Start ####"); SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -40,16 +67,18 @@ namespace OrmTest } }); - //if no exist create datebase SQLSUGAR4XTEST (bin/database/) + //If no exist create datebase db.DbMaintenance.CreateDatabase(); - //Use db + //Use db query var dt = db.Ado.GetDataTable("select 1"); - //create table OrderDetail - db.CodeFirst.InitTables(typeof(OrderItem)); + //Create tables + db.CodeFirst.InitTables(typeof(OrderItem),typeof(Order)); + var id = db.Insertable(new Order() { Name = "order1", CustomId = 1, Price = 0, CreateTime = DateTime.Now }).ExecuteReturnIdentity(); - db.Insertable(new OrderItem() { OrderId = 1, Price = 0 }).ExecuteCommand(); + //Insert data + db.Insertable(new OrderItem() { OrderId = id, Price = 0, CreateTime=DateTime.Now }).ExecuteCommand(); Console.WriteLine("#### SqlSugarClient End ####"); } @@ -63,7 +92,7 @@ namespace OrmTest DbContext context = new DbContext(); - context.Db.CodeFirst.InitTables();//Create Tables + context.Db.CodeFirst.InitTables();//Create Tables ; var orderDb = context.OrderDb; @@ -91,10 +120,10 @@ namespace OrmTest //Delete orderDb.Delete(insertObj); - orderDb.DeleteById(1); - orderDb.DeleteById(new int[] { 1, 2 }); - orderDb.Delete(it => it.Id == 1); - orderDb.AsDeleteable().Where(it => it.Id == 1).ExecuteCommand(); + orderDb.DeleteById(11111); + orderDb.DeleteById(new int[] { 1111, 2222 }); + orderDb.Delete(it => it.Id == 1111); + orderDb.AsDeleteable().Where(it => it.Id == 1111).ExecuteCommand(); //Update orderDb.Update(insertObj); @@ -117,7 +146,7 @@ namespace OrmTest SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, - DbType = DbType.MySql, + DbType = DbType.SqlServer, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute, ConfigureExternalServices = new ConfigureExternalServices() @@ -142,10 +171,10 @@ namespace OrmTest } } }); - db.CodeFirst.InitTables();//Create Table + db.CodeFirst.InitTables();//Create Table - db.Insertable(new MyCustomAttributeTable() { Id = Guid.NewGuid().ToString(), Name = "Name" }).ExecuteCommand(); - var list = db.Queryable().ToList(); + db.Insertable(new AttributeTable() { Id = Guid.NewGuid().ToString(), Name = "Name" }).ExecuteCommand(); + var list = db.Queryable().ToList(); Console.WriteLine("#### Custom Attribute End ####"); } @@ -180,7 +209,7 @@ namespace OrmTest new ConnectionConfig() { ConfigId = 1, - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -193,7 +222,121 @@ namespace OrmTest private static void DistributedTransactionExample() { - //see SqlServerTest + Console.WriteLine(""); + Console.WriteLine("#### Distributed TransactionExample Start ####"); + SqlSugarClient db = new SqlSugarClient(new List() + { + new ConnectionConfig(){ ConfigId="1", DbType=DbType.SqlServer, ConnectionString=Config.ConnectionString,InitKeyType=InitKeyType.Attribute,IsAutoCloseConnection=true }, + new ConnectionConfig(){ ConfigId="2", DbType=DbType.SqlServer, ConnectionString=Config.ConnectionString2 ,InitKeyType=InitKeyType.Attribute ,IsAutoCloseConnection=true} + }); + + //use db1 + db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem));// + db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand(); + Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable().Count()); + + //use db2 + db.ChangeDatabase("2"); + db.DbMaintenance.CreateDatabase();//Create Database2 + db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(Order), typeof(OrderItem)); + db.Insertable(new Order() { Name = "order1", CreateTime = DateTime.Now }).ExecuteCommand(); + Console.WriteLine(db.CurrentConnectionConfig.DbType + ":" + db.Queryable().Count()); + + // Example 1 + Console.WriteLine("Example 1"); + try + { + db.BeginTran(); + + db.ChangeDatabase("1");//use db1 + db.Deleteable().ExecuteCommand(); + Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + + db.ChangeDatabase("2");//use db2 + db.Deleteable().ExecuteCommand(); + Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + + throw new Exception(); + db.CommitTran(); + } + catch + { + db.RollbackTran(); + Console.WriteLine("---Roll back"); + db.ChangeDatabase("1");//use db1 + Console.WriteLine(db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + + db.ChangeDatabase("2");//use db2 + Console.WriteLine(db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + } + + + + // Example 2 + Console.WriteLine("Example 2"); + + var result=db.UseTran(() => + { + + db.ChangeDatabase("1");//use db1 + db.Deleteable().ExecuteCommand(); + Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + + db.ChangeDatabase("2");//use db2 + db.Deleteable().ExecuteCommand(); + Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + throw new Exception(""); + + }); + if (result.IsSuccess == false) { + Console.WriteLine("---Roll back"); + db.ChangeDatabase("1");//use db1 + Console.WriteLine(db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + + db.ChangeDatabase("2");//use db2 + Console.WriteLine(db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + } + + // Example 3 + Console.WriteLine("Example 3"); + + var result2 = db.UseTranAsync(() => + { + + db.ChangeDatabase("1");//use db1 + db.Deleteable().ExecuteCommand(); + Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + + db.ChangeDatabase("2");//use db2 + db.Deleteable().ExecuteCommand(); + Console.WriteLine("---Delete all " + db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + throw new Exception(""); + + }); + result2.Wait(); + if (result.IsSuccess == false) + { + Console.WriteLine("---Roll back"); + db.ChangeDatabase("1");//use sqlserver + Console.WriteLine(db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + + db.ChangeDatabase("2");//use mysql + Console.WriteLine(db.CurrentConnectionConfig.DbType); + Console.WriteLine(db.Queryable().Count()); + } + + Console.WriteLine("#### Distributed TransactionExample End ####"); } } @@ -209,7 +352,7 @@ namespace OrmTest Db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, - DbType = DbType.MySql, + DbType = DbType.SqlServer, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute, AopEvents = new AopEvents() @@ -243,7 +386,7 @@ namespace OrmTest Db = new SqlSugarClient(new ConnectionConfig() { ConnectionString = Config.ConnectionString, - DbType = DbType.MySql, + DbType = DbType.SqlServer, IsAutoCloseConnection = true, InitKeyType = InitKeyType.Attribute, AopEvents = new AopEvents() diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs b/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs index e10f4f2f0..fa82db4e7 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo1_Queryable.cs @@ -41,7 +41,7 @@ namespace OrmTest var getByWhere = db.Queryable().Where(it => it.Id == 1 || it.Name == "a").ToList(); var getByWhere2 = db.Queryable().Where(it => it.Id == DateTime.Now.Year).ToList(); var getByFuns = db.Queryable().Where(it => SqlFunc.IsNullOrEmpty(it.Name)).ToList(); - var getByFuns2 = db.Queryable().GroupBy(it=>it.Name).Select(it=>SqlFunc.AggregateDistinctCount(it.Price)).ToList(); + var getByFuns2 = db.Queryable().GroupBy(it => it.Name).Select(it => SqlFunc.AggregateDistinctCount(it.Price)).ToList(); Console.WriteLine("#### Examples End ####"); } @@ -142,13 +142,43 @@ 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) .Mapper(it => it.Child, it => it.Id, it => it.Parent.ParentId) .ToList(); + //one to one + var list2 = db.Queryable().Mapper(it => it.Order, it => it.OrderId).ToList(); + //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 ####"); } @@ -159,9 +189,9 @@ namespace OrmTest Console.WriteLine("#### No Entity Start ####"); var db = GetInstance(); - var list = db.Queryable().AS("`order` ").Where("id=id", new { id = 1 }).ToList(); + var list = db.Queryable().AS("order ").Where("id=id", new { id = 1 }).ToList(); - var list2 = db.Queryable("o").AS("`order`").AddJoinInfo("OrderDetail", "i", "o.id=i.OrderId").Where("id=id", new { id = 1 }).Select("o.*").ToList(); + var list2 = db.Queryable("o").AS("order").AddJoinInfo("OrderDetail", "i", "o.id=i.OrderId").Where("id=id", new { id = 1 }).Select("o.*").ToList(); Console.WriteLine("#### No Entity End ####"); } @@ -222,7 +252,7 @@ namespace OrmTest //id=@id var list4 = db.Queryable().Where("id=@id", new { id = 1 }).ToList(); //id=@id or name like '%'+@name+'%' - var list5 = db.Queryable().Where("id=@id or name like '%'||@name||'%' ", new { id = 1, name = "jack" }).ToList(); + var list5 = db.Queryable().Where("id=@id or name like '%'+@name+'%' ", new { id = 1, name = "jack" }).ToList(); @@ -293,7 +323,7 @@ namespace OrmTest { return new SqlSugarClient(new ConnectionConfig() { - DbType = SqlSugar.DbType.MySql, + DbType = SqlSugar.DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo2_Updateable.cs b/Src/Asp.Net/MySqlTest/Demo/Demo2_Updateable.cs index b218eb592..a4caa3045 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo2_Updateable.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo2_Updateable.cs @@ -16,7 +16,7 @@ namespace OrmTest SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -63,8 +63,8 @@ namespace OrmTest var result7 = db.Updateable(it => new Order() { Name = "a", CreateTime = DateTime.Now }).Where(it => it.Id == 11).ExecuteCommand(); var result71 = db.Updateable().SetColumns(it => new Order() { Name = "a", CreateTime = DateTime.Now }).Where(it => it.Id == 11).ExecuteCommand(); //only update name - var result8 = db.Updateable(it => it.Name == "Name" + 1).Where(it => it.Id == 1).ExecuteCommand(); - var result81 = db.Updateable().SetColumns(it => it.Name == "Name" + 1).Where(it => it.Id == 1).ExecuteCommand(); + var result8 = db.Updateable(it => it.Name == "Name" + "1").Where(it => it.Id == 1).ExecuteCommand(); + var result81 = db.Updateable().SetColumns(it => it.Name == "Name" + "1").Where(it => it.Id == 1).ExecuteCommand(); // @@ -73,13 +73,13 @@ namespace OrmTest /*** 3.by Dictionary ***/ var dt = new Dictionary(); dt.Add("id", 1); - dt.Add("name", null); + dt.Add("name", "abc"); dt.Add("createTime", DateTime.Now); var dtList = new List>(); dtList.Add(dt); - var t66 = db.Updateable(dt).AS("student").WhereColumns("id").ExecuteCommand(); - var t666 = db.Updateable(dtList).AS("student").WhereColumns("id").ExecuteCommand(); + var t66 = db.Updateable(dt).AS("[Order]").WhereColumns("id").ExecuteCommand(); + var t666 = db.Updateable(dtList).AS("[Order]").WhereColumns("id").ExecuteCommand(); diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo3_Insertable.cs b/Src/Asp.Net/MySqlTest/Demo/Demo3_Insertable.cs index bff8588f3..e366d0f3e 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo3_Insertable.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo3_Insertable.cs @@ -16,7 +16,7 @@ namespace OrmTest SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -30,22 +30,22 @@ namespace OrmTest } }); - var insertObj = new Order() { Id = 1, Name = "order1" }; + var insertObj = new Order() { Id = 1, Name = "order1",Price=0 }; var updateObjs = new List { - new Order() { Id = 11, Name = "order11" }, - new Order() { Id = 12, Name = "order12" } + new Order() { Id = 11, Name = "order11", Price=0 }, + new Order() { Id = 12, Name = "order12" , Price=0} }; - //Ignore Price - db.Insertable(insertObj).IgnoreColumns(it => new { it.Price }).ExecuteReturnIdentity();//get identity - db.Insertable(insertObj).IgnoreColumns("Name", "TestId").ExecuteReturnIdentity(); + //Ignore CreateTime + db.Insertable(insertObj).IgnoreColumns(it => new { it.CreateTime }).ExecuteReturnIdentity();//get identity + db.Insertable(insertObj).IgnoreColumns("CreateTime").ExecuteReturnIdentity(); //Only insert Name and Price db.Insertable(insertObj).InsertColumns(it => new { it.Name, it.Price }).ExecuteReturnIdentity(); - db.Insertable(insertObj).InsertColumns("Name", "SchoolId").ExecuteReturnIdentity(); + db.Insertable(insertObj).InsertColumns("Name", "Price").ExecuteReturnIdentity(); //ignore null columns - db.Insertable(insertObj).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand();//get change row count + db.Insertable(updateObjs).ExecuteCommand();//get change row count //Use Lock db.Insertable(insertObj).With(SqlWith.UpdLock).ExecuteCommand(); diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo4_Deleteable.cs b/Src/Asp.Net/MySqlTest/Demo/Demo4_Deleteable.cs index f8c7f5b54..8e39e2013 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo4_Deleteable.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo4_Deleteable.cs @@ -16,7 +16,7 @@ namespace OrmTest SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -30,16 +30,16 @@ namespace OrmTest } }); //by entity - db.Deleteable().Where(new Order() { Id = 1 }).ExecuteCommand(); + db.Deleteable().Where(new Order() { Id = 1111 }).ExecuteCommand(); //by primary key - db.Deleteable().In(1).ExecuteCommand(); + db.Deleteable().In(1111).ExecuteCommand(); //by primary key array - db.Deleteable().In(new int[] { 1, 2 }).ExecuteCommand(); + db.Deleteable().In(new int[] { 1111, 2222 }).ExecuteCommand(); //by expression - db.Deleteable().Where(it => it.Id == 1).ExecuteCommand(); + db.Deleteable().Where(it => it.Id == 11111).ExecuteCommand(); Console.WriteLine("#### Deleteable End ####"); diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo5_SqlQueryable.cs b/Src/Asp.Net/MySqlTest/Demo/Demo5_SqlQueryable.cs index d70a9e8f7..e98be52a1 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo5_SqlQueryable.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo5_SqlQueryable.cs @@ -16,20 +16,20 @@ namespace OrmTest Console.WriteLine("#### SqlQueryable Start ####"); SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true }); int total = 0; - var list = db.SqlQueryable("select * from student").ToPageList(1, 2, ref total); + var list = db.SqlQueryable("select * from [order]").ToPageList(1, 2, ref total); //by expression - var list2 = db.SqlQueryable("select * from student").Where(it => it.Id == 1).ToPageList(1, 2); + var list2 = db.SqlQueryable("select * from [order]").Where(it => it.Id == 1).ToPageList(1, 2); //by sql - var list3 = db.SqlQueryable("select * from student").Where("id=@id", new { id = 1 }).ToPageList(1, 2); + var list3 = db.SqlQueryable("select * from [order]").Where("id=@id", new { id = 1 }).ToPageList(1, 2); Console.WriteLine("#### SqlQueryable End ####"); } diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo6_Queue.cs b/Src/Asp.Net/MySqlTest/Demo/Demo6_Queue.cs index 93ea995fb..666fd27ee 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Demo6_Queue.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Demo6_Queue.cs @@ -16,7 +16,7 @@ namespace OrmTest SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo7_Ado.cs b/Src/Asp.Net/MySqlTest/Demo/Demo7_Ado.cs new file mode 100644 index 000000000..a4a7ba2db --- /dev/null +++ b/Src/Asp.Net/MySqlTest/Demo/Demo7_Ado.cs @@ -0,0 +1,57 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class Demo7_Ado + { + public static void Init() + { + Console.WriteLine(""); + Console.WriteLine("#### Ado Start ####"); + + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.SqlServer, + ConnectionString = Config.ConnectionString, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true, + AopEvents = new AopEvents + { + OnLogExecuting = (sql, p) => + { + Console.WriteLine(sql); + Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); + } + } + }); + //sql + var dt = db.Ado.GetDataTable("select * from [order] where @id>0 or name=@name", new List(){ + new SugarParameter("@id",1), + new SugarParameter("@name","2") + }); + + //sql + var dt2 = db.Ado.GetDataTable("select * from [order] where @id>0 or name=@name", new { id = 1, name = "2" }); + + //Stored Procedure + //var dt3 = db.Ado.UseStoredProcedure().GetDataTable("sp_school", new { name = "张三", age = 0 }); + //var nameP = new SugarParameter("@name", "张三"); + //var ageP = new SugarParameter("@age", null, true);//isOutput=true + //var dt4 = db.Ado.UseStoredProcedure().GetDataTable("sp_school", nameP, ageP); + + + + //There are many methods to under db.ado + var list= db.Ado.SqlQuery("select * from [order] "); + var intValue=db.Ado.SqlQuerySingle("select 1"); + db.Ado.ExecuteCommand("delete [order] where id>1000"); + //db.Ado.xxx + Console.WriteLine("#### Ado End ####"); + } + } +} diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo8_Saveable.cs b/Src/Asp.Net/MySqlTest/Demo/Demo8_Saveable.cs new file mode 100644 index 000000000..79a1ce33a --- /dev/null +++ b/Src/Asp.Net/MySqlTest/Demo/Demo8_Saveable.cs @@ -0,0 +1,48 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class Demo8_Saveable + { + public static void Init() + { + Console.WriteLine(""); + Console.WriteLine("#### Saveable Start ####"); + + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.SqlServer, + ConnectionString = Config.ConnectionString, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true, + AopEvents = new AopEvents + { + OnLogExecuting = (sql, p) => + { + Console.WriteLine(sql); + Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); + } + } + }); + + + //insert or update + db.Saveable(new Order() { Id=1, Name="jack" }).ExecuteReturnEntity(); + + + //insert or update + db.Saveable(new Order() { Id = 1000, Name = "jack", CreateTime=DateTime.Now }) + .InsertColumns(it => new { it.Name,it.CreateTime, it.Price})//if insert into name,CreateTime,Price + .UpdateColumns(it => new { it.Name, it.CreateTime })//if update set name CreateTime + .ExecuteReturnEntity(); + + Console.WriteLine(""); + Console.WriteLine("#### Saveable End ####"); + } + } +} diff --git a/Src/Asp.Net/MySqlTest/Demo/Demo9_EntityMain.cs b/Src/Asp.Net/MySqlTest/Demo/Demo9_EntityMain.cs new file mode 100644 index 000000000..be795b098 --- /dev/null +++ b/Src/Asp.Net/MySqlTest/Demo/Demo9_EntityMain.cs @@ -0,0 +1,46 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class Demo9_EntityMain + { + public static void Init() + { + Console.WriteLine(""); + Console.WriteLine("#### EntityMain Start ####"); + + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.SqlServer, + ConnectionString = Config.ConnectionString, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true, + AopEvents = new AopEvents + { + OnLogExecuting = (sql, p) => + { + Console.WriteLine(sql); + Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); + } + } + }); + var entityInfo = db.EntityMaintenance.GetEntityInfo(); + foreach (var column in entityInfo.Columns) + { + Console.WriteLine(column.DbColumnName); + } + + var dbColumnsName = db.EntityMaintenance.GetDbColumnName("Name"); + + var dbTableName = db.EntityMaintenance.GetTableName(); + + //more https://github.com/sunkaixuan/SqlSugar/wiki/9.EntityMain + Console.WriteLine("#### EntityMain End ####"); + } + } +} diff --git a/Src/Asp.Net/MySqlTest/Demo/DemoA_DbMain.cs b/Src/Asp.Net/MySqlTest/Demo/DemoA_DbMain.cs new file mode 100644 index 000000000..206cd6507 --- /dev/null +++ b/Src/Asp.Net/MySqlTest/Demo/DemoA_DbMain.cs @@ -0,0 +1,42 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class DemoA_DbMain + { + public static void Init() + { + Console.WriteLine(""); + Console.WriteLine("#### DbMain Start ####"); + + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.SqlServer, + ConnectionString = Config.ConnectionString, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true, + AopEvents = new AopEvents + { + OnLogExecuting = (sql, p) => + { + Console.WriteLine(sql); + Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); + } + } + }); + + var tables = db.DbMaintenance.GetTableInfoList(); + foreach (var table in tables) + { + Console.WriteLine(table.Description); + } + //more https://github.com/sunkaixuan/SqlSugar/wiki/a.DbMain + Console.WriteLine("#### DbMain End ####"); + } + } +} diff --git a/Src/Asp.Net/MySqlTest/Demo/DemoB_Aop.cs b/Src/Asp.Net/MySqlTest/Demo/DemoB_Aop.cs new file mode 100644 index 000000000..617d682ec --- /dev/null +++ b/Src/Asp.Net/MySqlTest/Demo/DemoB_Aop.cs @@ -0,0 +1,68 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class DemoB_Aop + { + public static void Init() + { + Console.WriteLine(""); + Console.WriteLine("#### Aop Start ####"); + + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.SqlServer, + ConnectionString = Config.ConnectionString, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true + }); + db.Aop.OnLogExecuted = (sql, pars) => //SQL executed event + { + Console.WriteLine("OnLogExecuted"+sql); + }; + db.Aop.OnLogExecuting = (sql, pars) => //SQL executing event (pre-execution) + { + Console.WriteLine("OnLogExecuting" + sql); + }; + db.Aop.OnError = (exp) =>//SQL execution error event + { + //exp.sql + }; + db.Aop.OnExecutingChangeSql = (sql, pars) => //SQL executing event (pre-execution,SQL script can be modified) + { + return new KeyValuePair(sql, pars); + }; + db.Aop.OnDiffLogEvent = it =>//Get data changes + { + var editBeforeData = it.BeforeData; + var editAfterData = it.AfterData; + var sql = it.Sql; + var parameter = it.Parameters; + var businessData = it.BusinessData; + var time = it.Time; + var diffType = it.DiffType;//enum insert 、update and delete + Console.WriteLine(businessData); + Console.WriteLine(editBeforeData[0].Columns[1].Value); + Console.WriteLine("to"); + Console.WriteLine(editAfterData[0].Columns[1].Value); + //Write logic + }; + + + db.Queryable().ToList(); + db.Queryable().ToList(); + + //OnDiffLogEvent + var data = db.Queryable().First(); + data.Name = "changeName"; + db.Updateable(data).EnableDiffLogEvent("--update Order--").ExecuteCommand(); + + Console.WriteLine("#### Aop End ####"); + } + } +} diff --git a/Src/Asp.Net/MySqlTest/Demo/DemoD_DbFirst.cs b/Src/Asp.Net/MySqlTest/Demo/DemoD_DbFirst.cs index 0384ce7a7..db57e0938 100644 --- a/Src/Asp.Net/MySqlTest/Demo/DemoD_DbFirst.cs +++ b/Src/Asp.Net/MySqlTest/Demo/DemoD_DbFirst.cs @@ -14,7 +14,7 @@ namespace OrmTest Console.WriteLine("#### DbFirst Start ####"); SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true diff --git a/Src/Asp.Net/MySqlTest/Demo/DemoE_CodeFirst.cs b/Src/Asp.Net/MySqlTest/Demo/DemoE_CodeFirst.cs index 00386f537..8692517e1 100644 --- a/Src/Asp.Net/MySqlTest/Demo/DemoE_CodeFirst.cs +++ b/Src/Asp.Net/MySqlTest/Demo/DemoE_CodeFirst.cs @@ -14,12 +14,12 @@ namespace OrmTest Console.WriteLine("#### CodeFirst Start ####"); SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, - ConnectionString =Config.ConnectionString, + DbType = DbType.SqlServer, + ConnectionString = Config.ConnectionString3, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true }); - db.DbMaintenance.CreateDatabase();//default bin/database + db.DbMaintenance.CreateDatabase(); db.CodeFirst.InitTables(typeof(CodeFirstTable1));//Create CodeFirstTable1 db.Insertable(new CodeFirstTable1() { Name = "a", Text="a" }).ExecuteCommand(); var list = db.Queryable().ToList(); diff --git a/Src/Asp.Net/MySqlTest/Demo/DemoF_Utilities.cs b/Src/Asp.Net/MySqlTest/Demo/DemoF_Utilities.cs new file mode 100644 index 000000000..7db24c350 --- /dev/null +++ b/Src/Asp.Net/MySqlTest/Demo/DemoF_Utilities.cs @@ -0,0 +1,46 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class DemoF_Utilities + { + public static void Init() + { + Console.WriteLine(""); + Console.WriteLine("#### Utilities Start ####"); + + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.SqlServer, + ConnectionString = Config.ConnectionString, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true, + AopEvents = new AopEvents + { + OnLogExecuting = (sql, p) => + { + Console.WriteLine(sql); + Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); + } + } + }); + + + List ids = Enumerable.Range(1, 100).ToList(); + db.Utilities.PageEach(ids, 10, list => + { + Console.WriteLine(string.Join("," ,list)); + }); + + var list2= db.Utilities.DataTableToList(db.Ado.GetDataTable("select * from [order]")); + + //more https://github.com/sunkaixuan/SqlSugar/wiki/f.Utilities + Console.WriteLine("#### Utilities End ####"); + } + } +} diff --git a/Src/Asp.Net/MySqlTest/Demo/DemoG_SimpleClient.cs b/Src/Asp.Net/MySqlTest/Demo/DemoG_SimpleClient.cs new file mode 100644 index 000000000..21b7208e8 --- /dev/null +++ b/Src/Asp.Net/MySqlTest/Demo/DemoG_SimpleClient.cs @@ -0,0 +1,36 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class DemoG_SimpleClient + { + public static void Init() + { + Console.WriteLine(""); + Console.WriteLine("#### SimpleClient Start ####"); + + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() + { + DbType = DbType.SqlServer, + ConnectionString = Config.ConnectionString, + InitKeyType = InitKeyType.Attribute, + IsAutoCloseConnection = true, + AopEvents = new AopEvents + { + OnLogExecuting = (sql, p) => + { + Console.WriteLine(sql); + Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value))); + } + } + }); + + Console.WriteLine("#### SimpleClient End ####"); + } + } +} diff --git a/Src/Asp.Net/MySqlTest/Demo/Democ_GobalFilter.cs b/Src/Asp.Net/MySqlTest/Demo/Democ_GobalFilter.cs index f100cdfd4..2406df714 100644 --- a/Src/Asp.Net/MySqlTest/Demo/Democ_GobalFilter.cs +++ b/Src/Asp.Net/MySqlTest/Demo/Democ_GobalFilter.cs @@ -6,7 +6,7 @@ using System.Text; namespace OrmTest { - public class Democ_GobalFilter + public class DemoC_GobalFilter { public static void Init() { @@ -38,7 +38,7 @@ namespace OrmTest public static SqlSugarClient GetInstance() { - SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { DbType = DbType.MySql, ConnectionString = Config.ConnectionString, IsAutoCloseConnection = true }); + SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() { DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, IsAutoCloseConnection = true }); //single table query gobal filter db.QueryFilter.Add(new SqlFilterItem() diff --git a/Src/Asp.Net/MySqlTest/MySqlTest.csproj b/Src/Asp.Net/MySqlTest/MySqlTest.csproj index 60561f472..3dbff7138 100644 --- a/Src/Asp.Net/MySqlTest/MySqlTest.csproj +++ b/Src/Asp.Net/MySqlTest/MySqlTest.csproj @@ -57,9 +57,16 @@ + + + + + + + diff --git a/Src/Asp.Net/MySqlTest/Program.cs b/Src/Asp.Net/MySqlTest/Program.cs index 32f5ac864..890a8f6f5 100644 --- a/Src/Asp.Net/MySqlTest/Program.cs +++ b/Src/Asp.Net/MySqlTest/Program.cs @@ -8,20 +8,30 @@ namespace OrmTest { static void Main(string[] args) { - // OldTestMain.Init(); - //Demo Demo0_SqlSugarClient.Init(); Demo1_Queryable.Init(); Demo2_Updateable.Init(); - Democ_GobalFilter.Init(); - DemoD_DbFirst.Init(); - DemoE_CodeFirst.Init(); + Demo3_Insertable.Init(); + Demo4_Deleteable.Init(); Demo5_SqlQueryable.Init(); Demo6_Queue.Init(); + Demo7_Ado.Init(); + Demo8_Saveable.Init(); + Demo9_EntityMain.Init(); + DemoA_DbMain.Init(); + DemoB_Aop.Init(); + DemoC_GobalFilter.Init(); + DemoD_DbFirst.Init(); ; + DemoE_CodeFirst.Init(); + DemoF_Utilities.Init(); + DemoG_SimpleClient.Init(); //Unit test - NewUnitTest.Init(); + //NewUnitTest.Init(); + + //Rest Data + NewUnitTest.RestData(); Console.WriteLine("all successfully."); Console.ReadKey(); diff --git a/Src/Asp.Net/MySqlTest/UnitTest/Main.cs b/Src/Asp.Net/MySqlTest/UnitTest/Main.cs index 7d21995af..c81b373f5 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/Main.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/Main.cs @@ -10,7 +10,7 @@ namespace OrmTest { public static SqlSugarClient Db=> new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -23,6 +23,12 @@ namespace OrmTest } } }); + + public static void RestData() + { + Db.DbMaintenance.TruncateTable(); + Db.DbMaintenance.TruncateTable(); + } public static void Init() { CodeFirst(); diff --git a/Src/Asp.Net/MySqlTest/UnitTest/UAdo.cs b/Src/Asp.Net/MySqlTest/UnitTest/UAdo.cs index a12149cd1..5f3a431cb 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/UAdo.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/UAdo.cs @@ -48,9 +48,9 @@ namespace OrmTest task8.Wait(); UValidate.Check(8, task8.Result[0].id, "ado"); - var task9=Db.Ado.SqlQuery("select * from `order` ;select * from OrderDetail"); + var task9=Db.Ado.SqlQuery("select * from [order];select * from OrderDetail"); - var task10 = Db.Ado.SqlQueryAsync("select * from `order`;select * from OrderDetail"); + var task10 = Db.Ado.SqlQueryAsync("select * from [order];select * from OrderDetail"); task10.Wait(); } } diff --git a/Src/Asp.Net/MySqlTest/UnitTest/UCodeFirst.cs b/Src/Asp.Net/MySqlTest/UnitTest/UCodeFirst.cs index 65a088715..3c853a7d5 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/UCodeFirst.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/UCodeFirst.cs @@ -13,13 +13,12 @@ namespace OrmTest if (Db.DbMaintenance.IsAnyTable("UnitCodeTest1", false)) Db.DbMaintenance.DropTable("UnitCodeTest1"); Db.CodeFirst.InitTables(); - Db.CodeFirst.InitTables(); } public class UnitCodeTest1 { [SqlSugar.SugarColumn(IndexGroupNameList = new string[] { "group1" })] public int Id { get; set; } - [SqlSugar.SugarColumn(DefaultValue = "now()", IndexGroupNameList = new string[] { "group1" })] + [SqlSugar.SugarColumn(DefaultValue="getdate()", IndexGroupNameList =new string[] {"group1" } )] public DateTime? CreateDate { get; set; } } } diff --git a/Src/Asp.Net/MySqlTest/UnitTest/UJson.cs b/Src/Asp.Net/MySqlTest/UnitTest/UJson.cs index 54906e0fc..717607f1d 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/UJson.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/UJson.cs @@ -11,24 +11,24 @@ namespace OrmTest public static void Json() { - Db.CodeFirst.InitTables(); - Db.DbMaintenance.TruncateTable(); - Db.Insertable(new JsonTest() { Order = new Order { Id = 1, Name = "order1" } }).ExecuteCommand(); - var list = Db.Queryable().ToList(); + Db.CodeFirst.InitTables(); + Db.DbMaintenance.TruncateTable(); + Db.Insertable(new UnitJsonTest() { Order = new Order { Id = 1, Name = "order1" } }).ExecuteCommand(); + var list = Db.Queryable().ToList(); UValidate.Check("order1", list.First().Order.Name, "Json"); - Db.Updateable(new JsonTest() { Id = 1, Order = new Order { Id = 2, Name = "order2" } }).ExecuteCommand(); - list= Db.Queryable().ToList(); + Db.Updateable(new UnitJsonTest() { Id = 1, Order = new Order { Id = 2, Name = "order2" } }).ExecuteCommand(); + list= Db.Queryable().ToList(); UValidate.Check("order2", list.First().Order.Name, "Json"); - var list2 = Db.Queryable().ToList(); + var list2 = Db.Queryable().ToList(); } } - public class JsonTest + public class UnitJsonTest { [SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)] public int Id { get; set; } - [SqlSugar.SugarColumn(ColumnDataType = "varchar(4000)", IsJson = true)] + [SqlSugar.SugarColumn(ColumnDataType = "varchar(max)", IsJson = true)] public Order Order { get; set; } } } diff --git a/Src/Asp.Net/MySqlTest/UnitTest/UQueryable.cs b/Src/Asp.Net/MySqlTest/UnitTest/UQueryable.cs index b314b621a..aa0906ec0 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/UQueryable.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/UQueryable.cs @@ -1,4 +1,5 @@ -using System; +using SqlSugar; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,19 +9,315 @@ namespace OrmTest { public partial class NewUnitTest { - public static void Queryable() { + public static void Queryable() + { var pageindex = 1; var pagesize = 10; var total = 0; var totalPage = 0; - var list=Db.Queryable().ToPageList(pageindex, pagesize, ref total, ref totalPage); + var list = Db.Queryable().ToPageList(pageindex, pagesize, ref total, ref totalPage); - Db.CodeFirst.InitTables(typeof(CarType)); - Db.Updateable() - .SetColumns(it => new CarType { State =SqlSugar.SqlFunc.IIF(it.State==true,false,true) }).Where(it=>true) - .ExecuteCommand(); + //Db.CodeFirst.InitTables(typeof(CarType)); + //Db.Updateable() + // .SetColumns(it => new CarType { State = SqlSugar.SqlFunc.IIF(it.State == true, false, true) }).Where(it => true) + // .ExecuteCommand(); + //Db.CodeFirst.InitTables(typeof(TestTree)); + //Db.DbMaintenance.TruncateTable(); + //Db.Ado.ExecuteCommand("insert testtree values(hierarchyid::GetRoot(),geography :: STGeomFromText ('POINT(55.9271035250276 -3.29431266523898)',4326),'name')"); + //var list2 = Db.Queryable().ToList(); + + Db.CodeFirst.InitTables(); + Db.Queryable().Where(it => it.Id.HasValue).ToList(); + + Db.Queryable().Where(it => SqlSugar.SqlFunc.Equals(it.CreateTime.Date, it.CreateTime.Date)).ToList(); + + var sql = Db.Queryable().Select(it => new UnitSelectTest() + { + + DcNull = it.Dc, + Dc = it.Int + }).ToSql().Key; + UValidate.Check(sql, "SELECT [Dc] AS [DcNull] , [Int] AS [Dc] FROM [UnitSelectTest]", "Queryable"); + + sql = Db.Updateable(new UnitSelectTest2()).ToSql().Key; + UValidate.Check(sql, @"UPDATE [UnitSelectTest2] SET + [Dc]=@Dc,[IntNull]=@IntNull WHERE [Int]=@Int", "Queryable"); + + sql = Db.Queryable().IgnoreColumns(it => it.CreateTime).ToSql().Key; + UValidate.Check(sql, "SELECT [Id],[Name],[Price],[CustomId] FROM [Order] ", "Queryable"); + sql = Db.Queryable().IgnoreColumns(it => new { it.Id, it.Name }).ToSql().Key; + UValidate.Check(sql, "SELECT [Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable"); + sql = Db.Queryable().IgnoreColumns("id").ToSql().Key; + UValidate.Check(sql, "SELECT [Name],[Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable"); + + var cts = IEnumerbleContains.Data(); + var list2=Db.Queryable() + .Where(p => /*ids.*/cts.Select(c => c.Id).Contains(p.Id)).ToList(); + + var cts2 = IEnumerbleContains.Data().ToList(); ; + var list3 = Db.Queryable() + .Where(p => /*ids.*/cts2.Select(c => c.Id).Contains(p.Id)).ToList(); + + + var list4 = Db.Queryable() + .Where(p => new List { 1, 2, 3 }.Where(b => b > 1).Contains(p.Id)).ToList(); + + Db.CodeFirst.InitTables(); + var list5 = Db.Queryable().Where(it => SqlSugar.SqlFunc.ToString(it.Date.Value.Year) == "1").ToList(); + var list6 = Db.Queryable().Where(it => it.Date.Value.Year == 1).ToList(); + var list7 = Db.Queryable().Where(it => it.Date.Value.Date == DateTime.Now.Date).ToList(); + + + SaleOrder saleOrderInfo = new SaleOrder(); + Db.CodeFirst.InitTables(); + var result = Db.GetSimpleClient().Update(o => new SaleOrder() + { + OrderStatus = 1, + CheckMan = saleOrderInfo.CheckMan, + CheckTime = DateTime.Now + }, o => o.OrderSn == saleOrderInfo.OrderSn && o.OrderStatus != 1); + } + + public static class IEnumerbleContains + { + public static IEnumerable Data() + { + for (int i = 0; i < 100; i++) + { + yield return new Order + { + Id = i, + }; + } + } + } + [SugarTable("UnitSaleOrder")] + public class SaleOrder + { + public SaleOrder() + { + SaleDate = DateTime.Now; + Team = 1; + AddTime = DateTime.Now; + OrderStatus = 0; + Points = 0; + PayPoints = 0; + PointsExchangeMoney = decimal.Zero; + IsPushMessage = false; + CostAmount = decimal.Zero; + OrderAmount = decimal.Zero; + RealOrderAmount = decimal.Zero; + AccountsDueAmount = decimal.Zero; + SettleType = 0; + IsPushMessage = false; + } + + /// + /// 订单号 + /// + public string OrderSn { get; set; } + + /// + /// 客户编号 + /// + public string CustomerNo { get; set; } + + + /// + /// 收货人姓名 + /// + public string CustomerName { get; set; } + + /// + /// 成本总金额 + /// + public decimal CostAmount { get; set; } + + /// + /// 订单总金额 + /// + public decimal OrderAmount { get; set; } + + /// + /// 实收金额(整单优惠后) + /// + public decimal RealOrderAmount { get; set; } + + /// + /// 销货日期 + /// + public DateTime SaleDate { get; set; } + + /// + /// 下单时间 + /// + public DateTime AddTime { get; set; } + + /// + /// 媒体资源投放ID + /// + public string IndustryCode { get; set; } + + public string IndustryName { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + + /// + /// 班组 + /// + public int Team { get; set; } + + /// + /// 销售员编号 + /// + public string SellerNo { get; set; } + + /// + /// 销售员姓名 + /// + public string SellerName { get; set; } + + /// + /// 操作人ID + /// + public virtual string HandlerCode { get; set; } + + /// + /// 操作者 + /// + public string Handler { get; set; } + + /// + /// 发货仓库代号 + /// + public string StoreCode { get; set; } + + /// + /// 发货仓库名称 + /// + public string StoreName { get; set; } + + /// + /// 销货店铺渠道代号 + /// + public string ShopChannelCode { get; set; } + + /// + /// 销货店铺渠道名称 + /// + public string ShopChannelName { get; set; } + + /// + /// 订单产品数 + /// + public int GoodsNum { get; set; } + + /// + /// 礼品数量 + /// + public int GiftNum { get; set; } + + /// + /// 对应预订单号 + /// + public string CustomerOrderSn { get; set; } + + /// + /// 订单赠送积分 + /// + public int Points { get; set; } + + /// + /// 应收款金额 + /// + public decimal AccountsDueAmount { get; set; } + + /// + /// 来自预约单号 + /// + public string ReserationOrderSn { get; set; } + + + /// + /// 订单状态 0为未审核 1为已审核 + /// + public int OrderStatus { get; set; } + + /// + /// 审核人 + /// + public string CheckMan { get; set; } + + /// + /// 审核时间 + /// + public DateTime? CheckTime { get; set; } + + /// + /// 结算类型 0为非金工石(零售) 1为金工石 + /// + public int SettleType { get; set; } + + /// + /// 使用积分 + /// + public int PayPoints { get; set; } + + /// + /// 积分抵现金额 + /// + public decimal PointsExchangeMoney { get; set; } + + /// + /// 是否已推送微信消息 + /// + public bool IsPushMessage { get; set; } + + } + + public class SaleOrderBaseInfo + { + public int GoodsNum { get; set; } + + public int GiftNum { get; set; } + + public decimal OrderAmount { get; set; } + + } + + + public class UnitTest3 + { + public DateTime? Date { get; set; } + } + + + public class UnitSelectTest2 + { + [SqlSugar.SugarColumn(IsOnlyIgnoreUpdate = true)] + public decimal? DcNull { get; set; } + public decimal Dc { get; set; } + public int? IntNull { get; set; } + [SqlSugar.SugarColumn(IsPrimaryKey = true)] + public decimal Int { get; set; } + } + + public class UnitSelectTest + { + public decimal? DcNull { get; set; } + public decimal Dc { get; set; } + public int? IntNull { get; set; } + public decimal Int { get; set; } + } + + public class UnitGuidTable + { + public Guid? Id { get; set; } } } } diff --git a/Src/Asp.Net/MySqlTest/UnitTest/UThread.cs b/Src/Asp.Net/MySqlTest/UnitTest/UThread.cs index 8b7068a38..48bf67da5 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/UThread.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/UThread.cs @@ -12,7 +12,7 @@ namespace OrmTest public static SqlSugarClient simpleDb => new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -27,7 +27,7 @@ namespace OrmTest }); public static SqlSugarClient ssDb => new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -43,7 +43,7 @@ namespace OrmTest }); public static SqlSugarClient singleDb = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, @@ -58,7 +58,7 @@ namespace OrmTest }); public static SqlSugarClient singleAndSsDb = new SqlSugarClient(new ConnectionConfig() { - DbType = DbType.MySql, + DbType = DbType.SqlServer, ConnectionString = Config.ConnectionString, InitKeyType = InitKeyType.Attribute, IsAutoCloseConnection = true, diff --git a/Src/Asp.Net/MySqlTest/UnitTest/UThread3.cs b/Src/Asp.Net/MySqlTest/UnitTest/UThread3.cs index 04794aeba..9e0e644c4 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/UThread3.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/UThread3.cs @@ -13,10 +13,10 @@ namespace OrmTest public static void Thread3() { Console.WriteLine("Thread3"); - SimpleAsync3(); - IsShardSameThreadAsync3(); - SingleAsync3(); - SingleAndIsShardSameThreadAsync3(); + SimpleAsync3().Wait(); + IsShardSameThreadAsync3().Wait(); + SingleAsync3().Wait(); + SingleAndIsShardSameThreadAsync3().Wait(); } diff --git a/Src/Asp.Net/MySqlTest/UnitTest/UValidate.cs b/Src/Asp.Net/MySqlTest/UnitTest/UValidate.cs index c766e9b02..bc2b97fc2 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/UValidate.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/UValidate.cs @@ -10,7 +10,7 @@ namespace OrmTest { public static void Check(object a, object b, object name) { - if (a?.ToString() != b?.ToString()) + if (a?.ToString()?.Trim() != b?.ToString()?.Trim()) { throw new Exception(name + " error"); } diff --git a/Src/Asp.Net/MySqlTest/UnitTest/Updateable.cs b/Src/Asp.Net/MySqlTest/UnitTest/Updateable.cs index 881eca2da..2397d6032 100644 --- a/Src/Asp.Net/MySqlTest/UnitTest/Updateable.cs +++ b/Src/Asp.Net/MySqlTest/UnitTest/Updateable.cs @@ -11,18 +11,139 @@ namespace OrmTest { public static void Updateable() { - Db.CodeFirst.InitTables(typeof(SYS_USER)); - Db.DbMaintenance.TruncateTable(); - Db.Insertable(new SYS_USER() { USER_ID=1,USER_ACCOUNT = "a", USER_PWD = "b", USER_NAME = "c", PWD_LASTCHTIME = DateTime.Now, PWD_ERRORCOUNT = 1, PWD_LASTERRTIME = DateTime.Now }).ExecuteCommand(); - Db.Updateable(new SYS_USER() { USER_ID=1, PWD_LASTERRTIME = null }).WhereColumns(it=> new{ it.PWD_ERRORCOUNT, it.PWD_LASTERRTIME }).ExecuteCommand(); - + Db.CodeFirst.InitTables(typeof(UnitUser)); + Db.DbMaintenance.TruncateTable(); + Db.Insertable(new UnitUser() { USER_ID=1,USER_ACCOUNT = "a", USER_PWD = "b", USER_NAME = "c", PWD_LASTCHTIME = DateTime.Now, PWD_ERRORCOUNT = 1, PWD_LASTERRTIME = DateTime.Now }).ExecuteCommand(); + Db.Updateable(new UnitUser() { USER_ID=1, PWD_LASTERRTIME = null }).WhereColumns(it=> new{ it.PWD_ERRORCOUNT, it.PWD_LASTERRTIME }).ExecuteCommand(); + Db.CodeFirst.InitTables(typeof(UnitBoolTest)); + var x = new UnitBoolTest(); + Db.Updateable().SetColumns(it => new UnitBoolTest() { BoolValue = !it.BoolValue }).Where(it=>it.Id==1).ExecuteCommand(); + Db.Updateable().SetColumns(it => it.BoolValue == !it.BoolValue ).Where(it=>it.Id==1).ExecuteCommand(); + Db.Updateable().SetColumns(it => new UnitBoolTest() { BoolValue = x.BoolValue }).Where(it => it.Id == 1).ExecuteCommand(); + Db.Updateable().SetColumns(it => it.BoolValue == x.BoolValue).Where(it => it.Id == 1).ExecuteCommand(); + Db.Updateable().SetColumns(it => new UnitBoolTest() { BoolValue = !x.BoolValue }).Where(it => it.Id == 1).ExecuteCommand(); + Db.Updateable().SetColumns(it => it.BoolValue == !x.BoolValue).Where(it => it.Id == 1).ExecuteCommand(); + Db.Updateable(x).ReSetValue(it => it.BoolValue == it.BoolValue).ExecuteCommand(); + Db.Updateable(x).ReSetValue(it => it.BoolValue == true).ExecuteCommand(); + Db.Updateable(x).ReSetValue(it => it.BoolValue == !it.BoolValue).ExecuteCommand(); + Db.Updateable(x).UpdateColumns(it =>new { it.BoolValue }) .ExecuteCommand(); + + + + UnitSaveDiary saveDiary = new UnitSaveDiary(); + saveDiary.ID = 2; + saveDiary.TypeID = 10; + saveDiary.TypeName = "类型100"; + saveDiary.Title = "标题1000"; + saveDiary.Content = "内容"; + saveDiary.Time = DateTime.Now; + saveDiary.IsRemind = false;//无论传false/true 最终执行的结果都是以true执行的 + + var sql = Db.Updateable().SetColumns(it => new UnitDiary() + { + IsRemind = saveDiary.IsRemind, + }).Where(it => it.ID == saveDiary.ID).ToSql(); + UValidate.Check(sql.Key, @"UPDATE [Diary] SET + [IsRemind] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable"); + + + sql = Db.Updateable().SetColumns(it => new UnitDiary() + { + TypeID = saveDiary.TypeID, + }).Where(it => it.ID == saveDiary.ID).ToSql(); + UValidate.Check(sql.Key, @"UPDATE [Diary] SET + [TypeID] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable"); + } } + public class UnitSaveDiary + { + public int ID { get; set; } + public int TypeID { get; set; } + public string TypeName { get; set; } + public string Title { get; set; } + public string Content { get; set; } + public DateTime? Time { get; set; } + public bool IsRemind { get; set; } + } + /// + /// 日记表 + /// + [SugarTable("Diary")] + public class UnitDiary + { + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public int ID { get; set; } + /// + /// 用户ID + /// + public int? UserID { get; set; } + /// + /// 日记类型ID + /// + public int? TypeID { get; set; } + /// + /// 日记类型名称 + /// + public string TypeName { get; set; } + /// + /// 标题 + /// + public string Title { get; set; } + /// + /// 内容 + /// + public string Content { get; set; } + /// + /// 时间 + /// + public DateTime? Time { get; set; } + /// + /// 是否提醒 + /// + public bool? IsRemind { get; set; } + /// + /// 封面图 + /// + public string Cover { get; set; } + /// + /// 是否为系统日记 1:系统日记 0:用户日记 + /// + public bool? IsSystem { get; set; } + /// + /// 权重(排序) + /// + public int? Sequence { get; set; } + /// + /// + /// + public string IP { get; set; } + /// + /// + /// + public DateTime? CreateTime { get; set; } + /// + /// + /// + public DateTime? UpdateTime { get; set; } + /// + /// + /// + public bool? IsDelete { get; set; } + } + + public class UnitBoolTest + { + [SugarColumn(IsPrimaryKey =true)] + public int Id { get; set; } + public bool BoolValue { get; set; } + public string Name { get; set; } + } /// /// 普通用户表 /// [Serializable] - public class SYS_USER + public class UnitUser { private System.Int64? _USER_ID; ///