From f2bdc4047a06ca32a688f9f692ee3e19b6bf3ad4 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 4 Jun 2017 12:50:30 +0800 Subject: [PATCH] Update IUpdateable --- SqlServerTest/Demos/Update.cs | 1 + .../UpdateProvider/UpdateableProvider.cs | 18 ++++++++++++++++-- SqlSugar/Interface/IUpdateable.cs | 1 + 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/SqlServerTest/Demos/Update.cs b/SqlServerTest/Demos/Update.cs index bfe7f4702..fb551f5d3 100644 --- a/SqlServerTest/Demos/Update.cs +++ b/SqlServerTest/Demos/Update.cs @@ -24,6 +24,7 @@ namespace OrmTest.Demo //Only update Name var t3 = db.Updateable(updateObj).UpdateColumns(it => new { it.Name }).ExecuteCommand(); + var t3_1 = db.Updateable(updateObj).UpdateColumns(it => it=="Name").ExecuteCommand(); //Ignore Name and TestId diff --git a/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 460c0ccfc..50caaadf1 100644 --- a/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -77,7 +77,7 @@ namespace SqlSugar public IUpdateable UpdateColumns(Expression> columns) { - var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray(); + var updateColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray(); List primaryKeys = GetPrimaryKeys(); foreach (var item in this.UpdateBuilder.DbColumnInfoList) { @@ -87,7 +87,21 @@ namespace SqlSugar item.IsPrimarykey = true; } } - this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => ignoreColumns.Contains(it.PropertyName) || it.IsPrimarykey == true).ToList(); + this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => updateColumns.Contains(it.PropertyName) || it.IsPrimarykey || it.IsIdentity).ToList(); + return this; + } + + public IUpdateable UpdateColumns(Func updateColumMethod) { + List primaryKeys = GetPrimaryKeys(); + foreach (var item in this.UpdateBuilder.DbColumnInfoList) + { + var mappingInfo = primaryKeys.SingleOrDefault(i => item.DbColumnName.Equals(i, StringComparison.CurrentCultureIgnoreCase)); + if (mappingInfo != null && mappingInfo.Any()) + { + item.IsPrimarykey = true; + } + } + this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => updateColumMethod(it.PropertyName) || it.IsPrimarykey ||it.IsIdentity).ToList(); return this; } public IUpdateable UpdateColumns(Expression> columns) diff --git a/SqlSugar/Interface/IUpdateable.cs b/SqlSugar/Interface/IUpdateable.cs index c75c14361..9fe03543f 100644 --- a/SqlSugar/Interface/IUpdateable.cs +++ b/SqlSugar/Interface/IUpdateable.cs @@ -15,6 +15,7 @@ namespace SqlSugar IUpdateable Where(bool isUpdateNull,bool IsOffIdentity = false); IUpdateable Where(Expression> expression); IUpdateable UpdateColumns(Expression> columns); + IUpdateable UpdateColumns(Func updateColumMethod); IUpdateable UpdateColumns(Expression> columns); IUpdateable IgnoreColumns(Expression> columns); IUpdateable IgnoreColumns(Func ignoreColumMethod);