Update Mongodb

This commit is contained in:
sunkaixuan
2025-08-05 16:25:32 +08:00
parent 8fe3cbb328
commit 7661c53975
2 changed files with 29 additions and 1 deletions

View File

@@ -37,5 +37,33 @@ namespace SqlSugar.MongoDb
this.UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>("$set", expResult));
return this;
}
public override IUpdateable<T> SetColumns(Expression<Func<T, T>> 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<T>)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<string, string>(SqlBuilder.GetTranslationColumnName(item.DbColumnName), SqlBuilder.GetTranslationColumnName(item.DbColumnName) + "=" + pName));
}
}
}
}
this.UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>("$set", expResult));
return this;
}
}
}

View File

@@ -2,7 +2,7 @@
<package >
<metadata>
<id>SqlSugar.MongoDbCore</id>
<version>5.1.4.238</version>
<version>5.1.4.241</version>
<authors>sunkaixuan</authors>
<owners>果糖大数据</owners>
<licenseUrl>http://www.apache.org/licenses/LICENSE-2.0.html</licenseUrl>