diff --git a/Src/Asp.Net/MySqlTest/Config.cs b/Src/Asp.Net/MySqlTest/Config.cs index 48e302503..b3b355553 100644 --- a/Src/Asp.Net/MySqlTest/Config.cs +++ b/Src/Asp.Net/MySqlTest/Config.cs @@ -8,8 +8,8 @@ namespace OrmTest { public class Config { - 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"; + public static string ConnectionString = "server=localhost;Database=SqlSugar4xTest;Uid=root;Pwd=root"; + public static string ConnectionString2 = "server=localhost;Database=SQLSUGAR4XTEST;Uid=root;Pwd=root"; + public static string ConnectionString3 = "server=localhost;Database=sqlsugar4xtest;Uid=root;Pwd=root"; } } diff --git a/Src/Asp.Net/MySqlTest/Demos/2_Update.cs b/Src/Asp.Net/MySqlTest/Demos/2_Update.cs index 2f9a678a2..87da85b04 100644 --- a/Src/Asp.Net/MySqlTest/Demos/2_Update.cs +++ b/Src/Asp.Net/MySqlTest/Demos/2_Update.cs @@ -58,6 +58,13 @@ namespace OrmTest.Demo //Column is null no update db.Updateable(updateObj).Where(true).ExecuteCommand(); + + + db.Updateable(new Student[] { new Student() { Id = 2, Name = "a2" }, new Student() { Id = 1, Name = "a1" } }) + .UpdateColumns(it => new { it.Name, it.Id, it.SchoolId }) + .WhereColumns(it=>new { it.SchoolId}) + .Where(it => it.Id == 1) + .ExecuteCommand(); } } } diff --git a/Src/Asp.Net/OracleTest/Demos/2_Update.cs b/Src/Asp.Net/OracleTest/Demos/2_Update.cs index c1078e94a..431b89ddd 100644 --- a/Src/Asp.Net/OracleTest/Demos/2_Update.cs +++ b/Src/Asp.Net/OracleTest/Demos/2_Update.cs @@ -66,6 +66,12 @@ namespace OrmTest.Demo db.Updateable(updateObj).Where(true).ExecuteCommand(); db.Updateable(new Student[] { new Student() { Id=2, Name="a2" }, new Student() { Id = 1, Name = "a1" } }).ExecuteCommand(); + + db.Updateable(new Student[] { new Student() { Id = 2, Name = "a2" }, new Student() { Id = 1, Name = "a1" } }) + .UpdateColumns(it => new { it.Name, it.Id, it.SchoolId }) + .WhereColumns(it => it.Name) + .Where(it => it.Id == 1) + .ExecuteCommand(); } } } diff --git a/Src/Asp.Net/SqlServerTest/Demos/2_Update.cs b/Src/Asp.Net/SqlServerTest/Demos/2_Update.cs index d0bcde6b0..17f3d6e16 100644 --- a/Src/Asp.Net/SqlServerTest/Demos/2_Update.cs +++ b/Src/Asp.Net/SqlServerTest/Demos/2_Update.cs @@ -57,25 +57,25 @@ namespace OrmTest.Demo //Update Student set Name='jack' Where Id=1 //Column is null no update - db.Updateable(updateObj).IgnoreColumns(ignoreAllNullColumns:true).ExecuteCommand(); + db.Updateable(updateObj).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand(); //sql - db.Updateable(updateObj).Where("id=@x",new { x="1"}).ExecuteCommand(); - db.Updateable(updateObj).Where("id","=",1).ExecuteCommand(); + db.Updateable(updateObj).Where("id=@x", new { x = "1" }).ExecuteCommand(); + db.Updateable(updateObj).Where("id", "=", 1).ExecuteCommand(); var t12 = db.Updateable().AS("Student").UpdateColumns(it => new School() { Name = "jack" }).Where(it => it.Id == 1).ExecuteCommandAsync(); t12.Wait(); //update one columns - var count = db.Updateable().UpdateColumns(it => it.SchoolId == it.SchoolId).Where(it => it.Id == it.Id+1).ExecuteCommand(); + var count = db.Updateable().UpdateColumns(it => it.SchoolId == it.SchoolId).Where(it => it.Id == it.Id + 1).ExecuteCommand(); var count1 = db.Updateable() - .UpdateColumnsIF(false,it => it.SchoolId == it.SchoolId)//ignore + .UpdateColumnsIF(false, it => it.SchoolId == it.SchoolId)//ignore .UpdateColumnsIF(true, it => it.SchoolId == 2).//ok Where(it => it.Id == it.Id + 1).ExecuteCommand(); //update one columns - var count2 = db.Updateable().UpdateColumns(it => it.SchoolId == it.SchoolId+1).Where(it => it.Id == it.Id + 1).ExecuteCommand(); + var count2 = db.Updateable().UpdateColumns(it => it.SchoolId == it.SchoolId + 1).Where(it => it.Id == it.Id + 1).ExecuteCommand(); var dt = new Dictionary(); dt.Add("id", 1); @@ -83,7 +83,7 @@ namespace OrmTest.Demo dt.Add("createTime", DateTime.Now); var t66 = db.Updateable(dt).AS("student").WhereColumns("id").With(SqlWith.UpdLock).ExecuteCommand(); - db.Updateable(new Student() { Id = 1 }).UpdateColumns(new string[] { "name" }).Where(it=>it.Name=="1").ExecuteCommand(); + db.Updateable(new Student() { Id = 1 }).UpdateColumns(new string[] { "name" }).Where(it => it.Name == "1").ExecuteCommand(); var dt2 = new Dictionary(); dt2.Add("id", 2); @@ -99,35 +99,40 @@ namespace OrmTest.Demo { SchoolId = SqlFunc.IIF(p.Id == 1, 2, 3) }).Where(p => p.Id == 10000).ExecuteCommand(); - var t21= db.Updateable().UpdateColumns(p => new Student() + var t21 = db.Updateable().UpdateColumns(p => new Student() { - SchoolId = SqlFunc.IF(p.Id==1).Return(1).End(p.Id) + SchoolId = SqlFunc.IF(p.Id == 1).Return(1).End(p.Id) }).Where(p => p.Id == 10000).ExecuteCommand(); - var t22= db.Updateable().UpdateColumns(p => new Student() + var t22 = db.Updateable().UpdateColumns(p => new Student() { - SchoolId = SqlFunc.Subqueryable().Where(s=>s.SchoolId==p.Id).Select(s=>s.Id) + SchoolId = SqlFunc.Subqueryable().Where(s => s.SchoolId == p.Id).Select(s => s.Id) }).Where(p => p.Id == 10000).ExecuteCommand(); - var t23= db.Updateable(new Student() { }) + var t23 = db.Updateable(new Student() { }) .Where(p => p.SchoolId == SqlFunc.Subqueryable().Where(s => s.SchoolId == p.Id).Select(s => s.Id)).ExecuteCommand(); - var t24 = db.Updateable(new Student() { }).WhereColumns(it=>it.CreateTime).ExecuteCommand(); + var t24 = db.Updateable(new Student() { }).WhereColumns(it => it.CreateTime).ExecuteCommand(); - var t25 = db.Updateable(new Student() { }).UpdateColumns(it=> new { it.Name,it.CreateTime}).WhereColumns(it => it.CreateTime).ExecuteCommand(); + var t25 = db.Updateable(new Student() { }).UpdateColumns(it => new { it.Name, it.CreateTime }).WhereColumns(it => it.CreateTime).ExecuteCommand(); var t26 = db.Updateable(new List() { new Student() { }, new Student() { } }).UpdateColumns(it => new { it.Name, it.CreateTime }).WhereColumns(it => it.CreateTime).ExecuteCommand(); - db.Updateable().UpdateColumns(it => new Student { SchoolId = GeneratePassword(2, 1), Name =SqlFunc.ToString(it.Name), CreateTime = DateTime.Now.AddDays(1) }).Where(it => it.Id == 1).ExecuteCommand(); + db.Updateable().UpdateColumns(it => new Student { SchoolId = GeneratePassword(2, 1), Name = SqlFunc.ToString(it.Name), CreateTime = DateTime.Now.AddDays(1) }).Where(it => it.Id == 1).ExecuteCommand(); + db.Updateable(new Student[] { new Student() { Id = 2, Name = "a2" }, new Student() { Id = 1, Name = "a1" } }) + .UpdateColumns(it => new { it.Name, it.Id, it.SchoolId }) + .WhereColumns(it => it.Name) + .Where(it => it.Id == 1) + .ExecuteCommand(); } private static int GeneratePassword(int v1, int v2) { - return 1; + return 1; } } - + } diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs index 8dfe2650a..37a0e9f16 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; +using System.Text.RegularExpressions; namespace SqlSugar { @@ -188,10 +189,10 @@ namespace SqlSugar { var isFirst = whereString == null; whereString += (isFirst ? null : " AND "); - whereString += item; + whereString += Regex.Replace(item,"\\"+this.Builder.SqlTranslationLeft,"T."+ this.Builder.SqlTranslationLeft); } } - else if (PrimaryKeys.HasValue()) + if (PrimaryKeys.HasValue()) { foreach (var item in PrimaryKeys) { diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs index 2504cc0a6..c12899202 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.RegularExpressions; namespace SqlSugar { @@ -70,10 +71,10 @@ namespace SqlSugar { var isFirst = whereString == null; whereString += (isFirst ? null : " AND "); - whereString += item; + whereString += Regex.Replace(item, " \\" + this.Builder.SqlTranslationLeft, "T." + this.Builder.SqlTranslationLeft); } } - else if (PrimaryKeys.HasValue()) + if (PrimaryKeys.HasValue()) { foreach (var item in PrimaryKeys) { diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs index 34582a047..4f05306bc 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs @@ -19,7 +19,7 @@ namespace SqlSugar foreach (var item in pkList) { var isFirst = pkList.First() == item; - var whereString = isFirst ? " " : " AND "; + var whereString = ""; whereString += GetOracleUpdateColums(item); whereList.Add(whereString); } diff --git a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite index 5ed6c9dc7..5b4ce21a2 100644 Binary files a/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite and b/Src/Asp.Net/SqliteTest/DataBase/SqlSugar4xTest.sqlite differ diff --git a/Src/Asp.Net/SqliteTest/Demos/2_Update.cs b/Src/Asp.Net/SqliteTest/Demos/2_Update.cs index be79cc840..c5bd939a7 100644 --- a/Src/Asp.Net/SqliteTest/Demos/2_Update.cs +++ b/Src/Asp.Net/SqliteTest/Demos/2_Update.cs @@ -60,6 +60,12 @@ namespace OrmTest.Demo db.Updateable(updateObj).Where(true).ExecuteCommand(); db.Updateable(new Student[] { new Student() { Id = 2, Name = "a2" }, new Student() { Id = 1, Name = "a1" } }).ExecuteCommand(); + + db.Updateable(new Student[] { new Student() { Id = 2, Name = "a2" }, new Student() { Id = 1, Name = "a1" } }) + .UpdateColumns(it => new { it.Name, it.Id, it.SchoolId }) + .WhereColumns(it => it.Name) + .Where(it => it.Id == 1) + .ExecuteCommand(); } } }