diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/Updateable/MongoDbUpdateable.cs b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/Updateable/MongoDbUpdateable.cs index df820be7d..72947dc2a 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/Updateable/MongoDbUpdateable.cs +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/MongoDb/Updateable/MongoDbUpdateable.cs @@ -37,5 +37,33 @@ namespace SqlSugar.MongoDb this.UpdateBuilder.SetValues.Add(new KeyValuePair("$set", expResult)); return this; } + public override IUpdateable SetColumns(Expression> columns, bool appendColumnsByDataFilter) + { + ThrowUpdateByObject(); + var expResult = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.Update) + .GetResultString(); + if (appendColumnsByDataFilter) + { + var newData = new T() { }; + SqlSugar.UtilMethods.ClearPublicProperties(newData, this.EntityInfo); + var data = ((UpdateableProvider)this.Context.Updateable(newData)).UpdateObjs.First(); + foreach (var item in this.EntityInfo.Columns.Where(it => !it.IsPrimarykey && !it.IsIgnore && !it.IsOnlyIgnoreUpdate)) + { + var value = item.PropertyInfo.GetValue(data); + if (value != null && !value.Equals("")) + { + if (!value.Equals(SqlSugar.UtilMethods.GetDefaultValue(item.UnderType))) + { + var pName = this.SqlBuilder.SqlParameterKeyWord + item.PropertyName + 1000; + var p = new SugarParameter(pName, value); + this.UpdateBuilder.Parameters.Add(p); + UpdateBuilder.SetValues.Add(new KeyValuePair(SqlBuilder.GetTranslationColumnName(item.DbColumnName), SqlBuilder.GetTranslationColumnName(item.DbColumnName) + "=" + pName)); + } + } + } + } + this.UpdateBuilder.SetValues.Add(new KeyValuePair("$set", expResult)); + return this; + } } } diff --git a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/main.nuspec b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/main.nuspec index 3b1e07622..6dda18d5d 100644 --- a/Src/Asp.NetCore2/SqlSugar.MongoDbCore/main.nuspec +++ b/Src/Asp.NetCore2/SqlSugar.MongoDbCore/main.nuspec @@ -2,7 +2,7 @@ SqlSugar.MongoDbCore - 5.1.4.238 + 5.1.4.241 sunkaixuan 果糖大数据 http://www.apache.org/licenses/LICENSE-2.0.html