diff --git a/OrmTest/UnitTest/Insert.cs b/OrmTest/UnitTest/Insert.cs index 2dd5da4af..d46adb93e 100644 --- a/OrmTest/UnitTest/Insert.cs +++ b/OrmTest/UnitTest/Insert.cs @@ -35,8 +35,11 @@ namespace OrmTest.UnitTest //Ignore Name and TestId var s4=db.Insertable(insertObj).IgnoreColumns(it => new object[] { it.Name,it.TestId }).ToSql(); + //Ignore Name and TestId + var s5 = db.Insertable(insertObj).IgnoreColumns(it => it == "Name" || it == "TestId").With(SqlWith.UpdLock).ToSql(); + //Use Lock - var s5=db.Insertable(insertObj).With(SqlWith.UpdLock).ToSql(); + var s6 =db.Insertable(insertObj).With(SqlWith.UpdLock).ToSql(); //ToSql var s7= db.Insertable(insertObj).With(SqlWith.UpdLock) diff --git a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 147ca4874..e015617fc 100644 --- a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -43,14 +43,19 @@ namespace SqlSugar InsertBuilder.IsReturnIdentity = true; PreToSql(); return Db.GetInt(InsertBuilder.ToSqlString(), InsertBuilder.Parameters.ToArray()); - } + } #endregion #region Setting public IInsertable IgnoreColumns(Expression> columns) { - var ignoreColumns = InsertBuilder.GetExpressionValue(columns,ResolveExpressType.Array); - this.InsertBuilder.DbColumnInfoList= this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.EntityPropertyName)).ToList(); + var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.Array); + this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumns.Contains(it.EntityPropertyName)).ToList(); + return this; + } + public IInsertable IgnoreColumns(Func ignoreColumMethod) + { + this.InsertBuilder.DbColumnInfoList =this.InsertBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.EntityPropertyName)).ToList(); return this; } @@ -73,7 +78,7 @@ namespace SqlSugar this.InsertBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.Context.CurrentConnectionConfig); this.InsertBuilder.IsInsertNull = isInsertNull; return this; - } + } #endregion #region Private Methods @@ -91,7 +96,8 @@ namespace SqlSugar }).ToList(); } } - else { + else + { } #endregion @@ -102,9 +108,9 @@ namespace SqlSugar var currentIgnoreColumns = this.Context.IgnoreColumns.Where(it => it.EntityName == this.EntityInfo.Name).ToList(); this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => { - return !currentIgnoreColumns.Any(i => it.EntityPropertyName.Equals(i.EntityPropertyName,StringComparison.CurrentCulture)); + return !currentIgnoreColumns.Any(i => it.EntityPropertyName.Equals(i.EntityPropertyName, StringComparison.CurrentCulture)); }).ToList(); - } + } #endregion if (this.IsSingle) { @@ -151,9 +157,9 @@ namespace SqlSugar { return entityName; } - if (this.Context.MappingColumns.Any(it => it.EntityName.Equals(EntityInfo.Name,StringComparison.CurrentCultureIgnoreCase))) + if (this.Context.MappingColumns.Any(it => it.EntityName.Equals(EntityInfo.Name, StringComparison.CurrentCultureIgnoreCase))) { - this.MappingColumnList = this.Context.MappingColumns.Where(it => it.EntityName.Equals(EntityInfo.Name,StringComparison.CurrentCultureIgnoreCase)).ToList(); + this.MappingColumnList = this.Context.MappingColumns.Where(it => it.EntityName.Equals(EntityInfo.Name, StringComparison.CurrentCultureIgnoreCase)).ToList(); } if (MappingColumnList == null || !MappingColumnList.Any()) { @@ -161,10 +167,12 @@ namespace SqlSugar } else { - var mappInfo = this.Context.MappingColumns.FirstOrDefault(it => it.EntityPropertyName.Equals(entityName,StringComparison.CurrentCultureIgnoreCase)); + var mappInfo = this.Context.MappingColumns.FirstOrDefault(it => it.EntityPropertyName.Equals(entityName, StringComparison.CurrentCultureIgnoreCase)); return mappInfo == null ? entityName : mappInfo.DbColumnName; } } + + #endregion } } diff --git a/SqlSugar/Interface/Insertable.cs b/SqlSugar/Interface/Insertable.cs index b51f9280d..9cfed894c 100644 --- a/SqlSugar/Interface/Insertable.cs +++ b/SqlSugar/Interface/Insertable.cs @@ -14,6 +14,7 @@ namespace SqlSugar IInsertable With(string lockString); IInsertable InsertColumns(Expression> columns); IInsertable IgnoreColumns(Expression> columns); + IInsertable IgnoreColumns(Func ignoreColumMethod); IInsertable Where(bool isInsertNull); KeyValuePair> ToSql(); EntityInfo EntityInfo { get; set; }