From 1ef6ce503ed1d44ad321296f15e27bec38aea4c0 Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Mon, 18 Jan 2021 00:54:51 +0800 Subject: [PATCH] Update demo --- .../SqlSeverTest/SqlSeverTest.csproj | 4 + .../SqlSeverTest/UnitTest/Main.cs | 3 + .../SqlSeverTest/UnitTest/Test01.cs | 100 ++++++++++++ .../SqlSeverTest/UnitTest/UCodeFirst.cs | 10 ++ .../SqlSeverTest/UnitTest/UInsert.cs | 69 ++++++++ .../SqlSeverTest/UnitTest/UQueryable.cs | 149 ++++++++++++++++-- .../SqlSeverTest/UnitTest/UQueryable2.cs | 83 ++++++++++ .../SqlSeverTest/UnitTest/UTran.cs | 34 ++++ .../SqlSeverTest/UnitTest/Updateable.cs | 41 +++-- 9 files changed, 465 insertions(+), 28 deletions(-) create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Test01.cs create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UInsert.cs create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable2.cs create mode 100644 Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UTran.cs diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/SqlSeverTest.csproj b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/SqlSeverTest.csproj index c2b9b36c5..dddc6bed0 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/SqlSeverTest.csproj +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/SqlSeverTest.csproj @@ -9,4 +9,8 @@ + + + + diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Main.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Main.cs index 7befb2146..21243c692 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Main.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Main.cs @@ -31,12 +31,15 @@ namespace OrmTest } public static void Init() { + Tran(); + Insert(); Queue(); CodeFirst(); Updateable(); Json(); Ado(); Queryable(); + Queryable2(); QueryableAsync(); //Thread(); //Thread2(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Test01.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Test01.cs new file mode 100644 index 000000000..891385426 --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Test01.cs @@ -0,0 +1,100 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public partial class NewUnitTest + { + [SugarTable("UnitUser")] + public class User2 + { + [SugarColumn(IsPrimaryKey = true)] + public int Id { set; get; } + public string Name { set; get; } + public int DepartmentId { set; get; } + } + [SugarTable("UnitOrder")] + public class Order2 + { + [SugarColumn(IsPrimaryKey = true)] + public int Id { set; get; } + public string Name { set; get; } + public int UserId { set; get; } + } + [SugarTable("UnitDepartment")] + public class Department2 + { + [SugarColumn(IsPrimaryKey = true)] + public int Id { set; get; } + public string Name { set; get; } + } + public static async Task QueryableAsync2() + { + DataBaseInitialize(); + var context = new SqlSugarClient(new ConnectionConfig() + { + ConnectionString = "Data Source=.;Initial Catalog=test2222;User id=sa;Password=haosql;pooling=true;min pool size = 2;max pool size=100;", + DbType = DbType.SqlServer, + IsAutoCloseConnection = true, + InitKeyType = InitKeyType.Attribute, + }); + //调式代码 用来打印SQL + context.Aop.OnLogExecuting = (sql, pars) => + { + Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "开始\r\n" + sql + "\r\n" + context.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value))); + }; + context.Aop.OnLogExecuted = (sql, pars) => + { + Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "结束\r\n" + sql + "\r\n" + context.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value))); + }; + var recordCount = new RefAsync(); + //var result = await context.Queryable((o, u, d) => new JoinQueryInfos + var result = await context.Queryable((o, u) => new JoinQueryInfos + ( + JoinType.Left, o.UserId == u.Id + //,JoinType.Left, u.DepartmentId == d.Id + )) + .AS("dbo.UnitOrder") + .AS("test1111.dbo.UnitUser") + //.AS("test1.dbo.Department") + .Select(o => new User2() { Id = o.Id, Name = o.Name }) + .ToPageListAsync(1, 10, recordCount); + + Console.ReadLine(); + } + public static void DataBaseInitialize() + { + //数据库1 + var context1 = new SqlSugarClient(new ConnectionConfig() + { + ConnectionString = "Data Source=.;Initial Catalog=test1111;User id=sa;Password=haosql;pooling=true;min pool size = 2;max pool size=100;", + DbType = DbType.SqlServer, + IsAutoCloseConnection = true, + InitKeyType = InitKeyType.Attribute, + }); + context1.DbMaintenance.CreateDatabase(); + context1.CodeFirst.InitTables(typeof(User2)); + context1.CodeFirst.InitTables(typeof(Department2)); + if (context1.Queryable().Where(t => t.Id == 1).Count() == 0) + context1.Insertable(new User2() { Id = 1, Name = "TestUser", DepartmentId = 1 }).ExecuteCommand(); + if (context1.Queryable().Where(t => t.Id == 1).Count() == 0) + context1.Insertable(new Department2() { Id = 1, Name = "TestDepartment" }).ExecuteCommand(); + //数据库2 + var context2 = new SqlSugarClient(new ConnectionConfig() + { + ConnectionString = "Data Source=.;Initial Catalog=test2222;User id=sa;Password=haosql;pooling=true;min pool size = 2;max pool size=100;", + DbType = DbType.SqlServer, + IsAutoCloseConnection = true, + InitKeyType = InitKeyType.Attribute, + }); + context2.DbMaintenance.CreateDatabase(); + context2.CodeFirst.InitTables(typeof(Order2)); + if (context1.Queryable().Where(t => t.Id == 1).Count() == 0) + context2.Insertable(new Order2() { Id = 1, Name = "Order", UserId = 1 }).ExecuteCommand(); + } + } +} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UCodeFirst.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UCodeFirst.cs index 3c853a7d5..f80ffa02b 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UCodeFirst.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UCodeFirst.cs @@ -10,9 +10,19 @@ namespace OrmTest { public static void CodeFirst() { + Db.CodeFirst.InitTables(); if (Db.DbMaintenance.IsAnyTable("UnitCodeTest1", false)) Db.DbMaintenance.DropTable("UnitCodeTest1"); Db.CodeFirst.InitTables(); + Db.CodeFirst.InitTables(); + } + + public class UnitCodeFirstpks2 + { + [SqlSugar.SugarColumn(IsPrimaryKey =true)] + public string id { get; set; } + [SqlSugar.SugarColumn(IsPrimaryKey = true)] + public string id2 { get; set; } } public class UnitCodeTest1 { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UInsert.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UInsert.cs new file mode 100644 index 000000000..f0b20032f --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UInsert.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public partial class NewUnitTest + { + public static void Insert() + { + var db = Db; + db.CodeFirst.InitTables(); + db.Insertable(new List + { + new UinitBlukTable(){ Id=1,Create=DateTime.Now, Name="00" }, + new UinitBlukTable(){ Id=2,Create=DateTime.Now, Name="11" } + + }).UseSqlServer().ExecuteBlueCopy(); + var dt = db.Queryable().ToDataTable(); + dt.Rows[0][0] = 3; + dt.Rows[1][0] = 4; + dt.TableName = "[UinitBlukTable]"; + db.Insertable(dt).UseSqlServer().ExecuteBlueCopy(); + db.Insertable(new List + { + new UinitBlukTable2(){ Id=5, Name="55" }, + new UinitBlukTable2(){ Id=6, Name="66" } + + }).UseSqlServer().ExecuteBlueCopy(); + db.Ado.BeginTran(); + db.Insertable(new List + { + new UinitBlukTable2(){ Id=7, Name="77" }, + new UinitBlukTable2(){ Id=8, Name="88" } + + }).UseSqlServer().ExecuteBlueCopy(); + var task= db.Insertable(new List + { + new UinitBlukTable2(){ Id=9, Name="9" }, + new UinitBlukTable2(){ Id=10, Name="10" } + + }).UseSqlServer().ExecuteBlueCopyAsync(); + task.Wait(); + db.Ado.CommitTran(); + var list = db.Queryable().ToList(); + db.DbMaintenance.TruncateTable(); + if (string.Join("", list.Select(it => it.Id)) != "12345678910") + { + throw new Exception("Unit Insert"); + } + } + public class UinitBlukTable + { + public int Id { get; set; } + public string Name { get; set; } + [SqlSugar.SugarColumn(IsNullable =true)] + public DateTime? Create { get; set; } + } + [SqlSugar.SugarTable("UinitBlukTable")] + public class UinitBlukTable2 + { + public string Name { get; set; } + public int Id { get; set; } + } + + } +} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs index d59fb4b45..cfc75830a 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs @@ -54,7 +54,7 @@ namespace OrmTest UValidate.Check(sql, "SELECT [Name],[Price],[CreateTime],[CustomId] FROM [Order] ", "Queryable"); var cts = IEnumerbleContains.Data(); - var list2=Db.Queryable() + var list2 = Db.Queryable() .Where(p => /*ids.*/cts.Select(c => c.Id).Contains(p.Id)).ToList(); var cts2 = IEnumerbleContains.Data().ToList(); ; @@ -81,42 +81,157 @@ namespace OrmTest }, o => o.OrderSn == saleOrderInfo.OrderSn && o.OrderStatus != 1); var ids = Enumerable.Range(1, 11).ToList(); - var list8=Db.Queryable().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList(); + var list8 = Db.Queryable().Where(it => SqlFunc.ContainsArrayUseSqlParameters(ids, it.Id)).ToList(); var result2 = Db.Queryable().Where(o => o.XH == UserLoginInfo.XH).Select(o => o.XH).ToSql(); var x = Db.Queryable().Select(it => new BoolTest2() { - a =it.a + a = it.a }).ToSql(); UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest1] ", "Queryable"); x = Db.Queryable().Select(it => new BoolTest1() { - a = it.a.Value + a = it.a.Value }).ToSql(); UValidate.Check(x.Key, "SELECT [a] AS [a] FROM [BoolTest2] ", "Queryable"); - Db.CodeFirst.InitTables(); - - Db.Queryable().Select(it => - - new UnitDecimal2 + var db = Db; + db.CodeFirst.InitTables(); + db.Deleteable().ExecuteCommand(); + db.Deleteable().ExecuteCommand(); + db.Insertable(new UserInfo() { - x1 = it.x1 * it.x2 + Id = 1, + Password = "123", + UserName = "admin" + }).ExecuteCommand(); + db.Insertable(new UserIpRuleInfo() + { + Addtime = DateTime.Now, + UserName = "a", + Id = 11, + UserId = 1, + Description = "xx", + IpRange = "1", + RuleType = 1 + }).ExecuteCommand(); + var vmList = db.Queryable( + (m1, m2) => m1.Id == m2.UserId + ).Where((m1, m2) => m1.Id > 0).Select((m1, m2) => new UserIpRuleInfo() + { + + IpRange = m2.IpRange, + Addtime = m2.Addtime, + RuleType = m2.RuleType, + }).ToList(); + if (string.IsNullOrEmpty(vmList.First().IpRange)) + { + throw new Exception("Queryable"); + } + + Db.Insertable(new Order() { CreateTime=DateTime.Now, CustomId=1, Name="a",Price=1 }).ExecuteCommand(); + var sa = Db.SqlQueryable("SELECT * FroM [ORDER] where id in (@id) "); + sa.AddParameters(new List() { + new SugarParameter("id",new int[]{ 1}) + }); + int i = 0; + var salist= sa.ToPageList(1,2,ref i); + + db.CodeFirst.InitTables(); + db.Insertable(new UnitBytes11() { bytes = null, name = "a" }).ExecuteCommand(); + db.Insertable(new UnitBytes11() { bytes=new byte[] { 1,2} , name="a"}).ExecuteCommand(); + var bytes = db.Queryable().Select(it => new + { + b = it.bytes, + name="a" }).ToList(); } - - public class UnitDecimal + + public class UnitBytes11 { - public decimal x1 { get; set; } - public decimal x2 { get; set; } - } - public class UnitDecimal2 { - public decimal? x1 { get; set; } + [SugarColumn(Length =200,IsNullable =true)] + public byte[] bytes { get; set; } + public string name{ get; set; } } + /// + /// + /// + [Serializable] + [SugarTable("users")] + public class UserInfo + { + /// + /// + /// + public int Id { get; set; } + + /// + /// + /// + + public string UserName { get; set; } + + /// + /// + /// + public string Password { get; set; } + + } + /// + /// + /// + [Serializable] + [SugarTable("user_ip_rules")] + public class UserIpRuleInfo + { + /// + /// 自增Id + /// + public int Id { get; set; } + + + /// + /// 用户Id + /// + [SugarColumn(ColumnName = "user_id")] + public int UserId { get; set; } + + /// + /// 用户名 + /// + [SugarColumn(IsIgnore = true)] + public string UserName { get; set; } + + /// + /// IP地址或范围 + /// + [SugarColumn(ColumnName = "ip_range")] + public string IpRange { get; set; } + + + /// + /// 规则类型 0-黑名单 1-白名单 + /// + [SugarColumn(ColumnName = "rule_type")] + public int RuleType { get; set; } + + + /// + /// 描述/备注 + /// + public string Description { get; set; } + + + /// + /// 添加时间 + /// + public DateTime Addtime { get; set; } + + } /// /// 系统用户表实体模型类 /// diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable2.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable2.cs new file mode 100644 index 000000000..769b68afb --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable2.cs @@ -0,0 +1,83 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public partial class NewUnitTest + { + public static void Queryable2() + { + var list4 = Db.Queryable() + .Mapper(it => it.A, it => it.AId) + .Where(it => it.A.Name == "a") + .ToList(); + + + var list5 = Db.Queryable() + .Mapper(it => it.A, it => it.AId, it => it.A.Id) + .Where(it => it.A.Name == "a") + .ToList(); + + + var list3 = Db.Queryable() + .Mapper(it => it.Items, it => it.Items.First().OrderId) + .Where(it => it.Items.Count() > 0) + .ToList(); + + var list6 = Db.Queryable() + .Mapper(it => it.Items, it => it.Items.First().OrderId) + .Where(it => it.Items.Any()) + .ToList(); + + + var sql=Db.Queryable().AS("[order]").ToList(); + + var sql1 = Db.Queryable((o, i, c) => new JoinQueryInfos( + JoinType.Left, o.Id == i.OrderId, + JoinType.Left, c.Id == o.CustomId + )) + .AS("[aa]") + .AS("[xx]") + .AS("[yy]") + .Select().ToSql().Key; + if (!sql1.Contains("[aa]") || !sql1.Contains("[xx]") || !sql1.Contains("[yy]")) + { + throw new Exception("unit queryable2 "); + } + var sql2 = Db.Queryable().AS("[zz]").ToSql().Key; + if (sql2 != "SELECT [ItemId],[OrderId],[Price],[CreateTime] FROM [zz] ") + { + throw new Exception("unit queryable2 "); + } + Db.Queryable((o, i, c) => new JoinQueryInfos( + JoinType.Left, o.Id == i.OrderId, + JoinType.Left, c.Id == o.CustomId + )) + .AS("[order]") + .AS("[orderdetail]") + .AS("[custom]") + .Select().ToList(); + + Db.Queryable().AS("[order]").Select("*").ToList(); + + var qu1=Db.Queryable().Select(it => new + { + id = it.Id + }).MergeTable().Select(); + var qu2 = Db.Queryable().Select(it => new + { + id = it.Id, + name=it.Name + }).MergeTable().Select(); + var list=Db.Queryable(qu1, qu2,JoinType.Left, (x, y) => x.Id == y.Id).Select((x,y) => new + { + id1=x.Id, + name=y.Name + }).ToList(); + } + } +} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UTran.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UTran.cs new file mode 100644 index 000000000..2908b4abc --- /dev/null +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UTran.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public partial class NewUnitTest + { + + public static void Tran() + { + var db = Db; + int oldCount = GetCount(db); + Console.WriteLine(oldCount); + db.BeginTran(); + db.Deleteable().ExecuteCommand(); + Console.WriteLine(GetCount(db)); + db.RollbackTran(); + int newCount = GetCount(db); + Console.WriteLine(newCount); + if (newCount != oldCount) + { + throw new Exception("NewUnitTest Tran "); + } + } + + private static int GetCount(SqlSugar.SqlSugarClient db) + { + return db.Queryable().Count(); + } + } +} diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Updateable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Updateable.cs index dd4faecbd..3f693b026 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Updateable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/Updateable.cs @@ -13,12 +13,12 @@ namespace OrmTest { 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.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 = !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(); @@ -26,7 +26,7 @@ namespace OrmTest 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(); + Db.Updateable(x).UpdateColumns(it => new { it.BoolValue }).ExecuteCommand(); @@ -49,7 +49,7 @@ namespace OrmTest sql = Db.Updateable().SetColumns(it => new UnitDiary() { - TypeID = saveDiary.TypeID, + TypeID = saveDiary.TypeID, }).Where(it => it.ID == saveDiary.ID).ToSql(); UValidate.Check(sql.Key, @"UPDATE [Diary] SET [TypeID] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable"); @@ -62,7 +62,7 @@ namespace OrmTest UValidate.Check(sql.Key, @"UPDATE [Diary] SET [TypeID] = @Const0 WHERE ( [ID] = @ID1 )", "Updateable"); - sql=Db.Updateable().SetColumns(it => new NullTest() + sql = Db.Updateable().SetColumns(it => new NullTest() { p = true @@ -81,20 +81,39 @@ namespace OrmTest Db.Updateable() .SetColumns(it => it.Name == "a") .SetColumns(it => it.CreateTime == DateTime.Now) - .SetColumns(it=>it.Price==1).Where(it=>it.Id==1).ExecuteCommand(); + .SetColumns(it => it.Price == 1).Where(it => it.Id == 1).ExecuteCommand(); Db.Updateable() - .SetColumns(it =>new Order{ Name="a",CreateTime=DateTime.Now }) - .SetColumns(it => it.Price==1).Where(it => it.Id == 1).ExecuteCommand(); + .SetColumns(it => new Order { Name = "a", CreateTime = DateTime.Now }) + .SetColumns(it => it.Price == 1).Where(it => it.Id == 1).ExecuteCommand(); Db.Updateable() .SetColumns(it => new Order { Name = "a", CreateTime = DateTime.Now }) - .SetColumns(it => new Order() { Price=1 }).Where(it => it.Id == 1).ExecuteCommand(); + .SetColumns(it => new Order() { Price = 1 }).Where(it => it.Id == 1).ExecuteCommand(); + + Db.Updateable() + .SetColumns(it => new Order { Name= it.Id>0 ?"1":"2", CreateTime = DateTime.Now }) + .Where(it => it.Id == 1).ExecuteCommand(); + + Db.Updateable() + .SetColumns(it => new Order { Name = SqlFunc.IsNull(it.Name,"a")+"b", CreateTime = DateTime.Now }) + .Where(it => it.Id == 1).ExecuteCommand(); + + Db.CodeFirst.InitTables(); + Db.Insertable(new Unitbluecopy()).UseSqlServer().ExecuteBlueCopy(); } } + + public class Unitbluecopy + { + public int Id { get; set; } + [SugarColumn(IsNullable =true)] + public decimal? x { get; set; } + } + public class NullTest { public int id { get; set; }