using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OrmTest { public class Demo3_Insertable { public static void Init() { Console.WriteLine(""); Console.WriteLine("#### Insertable 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 insertObj = new Order() { Id = 1, Name = "order1", Price = 0 }; var insertObjs = new List { new Order() { Id = 11, Name = "order11", Price=0 }, new Order() { Id = 12, Name = "order12" , Price=0} }; //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", "Price").ExecuteReturnIdentity(); //ignore null columns db.Insertable(insertObjs).ExecuteCommand();//get change row count //Use Lock db.Insertable(insertObj).With(SqlWith.UpdLock).ExecuteCommand(); insertObjs = new List { new Order() { Id = 11, Name = "order11", Price=1 }, new Order() { Id = 12, Name = "order12" , Price=20, CreateTime=DateTime.Now, CustomId=1} }; db.Insertable(insertObjs).UseSqlServer().ExecuteBlueCopy(); db.CodeFirst.InitTables(); db.CodeFirst.InitTables(); db.DbMaintenance.TruncateTable("RootTable0"); db.DbMaintenance.TruncateTable("TwoItem"); db.DbMaintenance.TruncateTable("TwoItem2"); db.DbMaintenance.TruncateTable("TwoItem3"); db.DbMaintenance.TruncateTable("ThreeItem2"); Console.WriteLine("SubInsert Start"); db.Insertable(new Order() { Name = "订单 1", CustomId = 1, Price = 100, CreateTime = DateTime.Now, Id = 0, Items = new List() { new OrderItem(){ CreateTime=DateTime.Now, OrderId=0, Price=1, ItemId=1 }, new OrderItem(){ CreateTime=DateTime.Now, OrderId=0, Price=2, ItemId=2 } } }) .AddSubList(it => it.Items.First().OrderId).ExecuteReturnPrimaryKey(); db.Insertable(new List() { new RootTable0() { Name="aa", TwoItem2=new TwoItem2() { Id="1", ThreeItem2=new List(){ new ThreeItem2(){ Name="a", TwoItem2Id="1" } } }, TwoItem=new TwoItem() { Name ="itema" , RootId=2 }, TwoItem3=new List(){ new TwoItem3(){ Id=0, Name="a",Desc="" }, } }, new RootTable0() { Name="bb", TwoItem2=new TwoItem2() { Id="2" }, TwoItem=new TwoItem() { Name ="itemb" , RootId=2, }, TwoItem3=new List(){ new TwoItem3(){ Id=1, Name="b",Desc="" }, new TwoItem3(){ Id=2, Name="b1",Desc="1" }, } } }) .AddSubList(it => it.TwoItem.RootId) .AddSubList(it => new GetSubInsertTree() { Expression = it.TwoItem2.RootId, ChildExpression=new List() { new GetSubInsertTree(){ Expression=it.TwoItem2.ThreeItem2.First().TwoItem2Id } } }) .AddSubList(it => it.TwoItem3) .ExecuteReturnPrimaryKey(); Console.WriteLine("#### Insertable End ####"); } } }