diff --git a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavTask.cs b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavTask.cs index 2b381c8f5..4a11d8e7a 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavTask.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/ExecuteNavProvider/UpdateNavTask.cs @@ -65,6 +65,7 @@ namespace SqlSugar { ignoreColumns = new string[] { }; } + this.Context = UpdateNavProvider._Context; var navColumns = this.Context.EntityMaintenance.GetEntityInfo().Columns.Where(it=> !ignoreColumns.Contains(it.PropertyName) || !ignoreColumns.Any(z=>z.EqualCase(it.DbColumnName))).Where(it => it.Navigat != null).ToList(); var updateNavs = this; UpdateNavMethodInfo methodInfo = updateNavs.IncludeByNameString(navColumns[0].PropertyName); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index aab59ff34..83bba3dc4 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -753,6 +753,13 @@ namespace SqlSugar model.Args[0].MemberName = name; return AggregateSum(model); } + public virtual string AggregateAvgNoNull(MethodCallExpressionModel model) + { + model.Args.Add(new MethodCallExpressionArgs() { MemberValue = 0, MemberName = 0 }); + var name = IsNull(model); + model.Args[0].MemberName = name; + return AggregateAvg(model); + } public virtual string JsonListObjectAny(MethodCallExpressionModel model) { throw new NotImplementedException("Current database no support"); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs index f24f141f0..1a9dcef9d 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs @@ -105,6 +105,7 @@ namespace SqlSugar string JsonLike(MethodCallExpressionModel model); string Collate(MethodCallExpressionModel model); string AggregateSumNoNull(MethodCallExpressionModel model); + string AggregateAvgNoNull(MethodCallExpressionModel model); string JsonListObjectAny(MethodCallExpressionModel model); string JsonArrayAny(MethodCallExpressionModel model); string CompareTo(MethodCallExpressionModel model); diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs index 8e8341007..b4bf50c2c 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs @@ -318,6 +318,7 @@ namespace SqlSugar public static TResult AggregateSumNoNull(TResult thisValue) { throw new NotSupportedException("Can only be used in expressions"); } public static string Collate(string thisValue) { throw new NotSupportedException("Can only be used in expressions"); } public static TResult AggregateAvg(TResult thisValue) { throw new NotSupportedException("Can only be used in expressions"); } + public static TResult AggregateAvgNoNull(TResult thisValue) { throw new NotSupportedException("Can only be used in expressions"); } public static TResult AggregateMin(TResult thisValue) { throw new NotSupportedException("Can only be used in expressions"); } public static TResult AggregateMax(TResult thisValue) { throw new NotSupportedException("Can only be used in expressions"); } public static int AggregateCount(TResult thisValue) { throw new NotSupportedException("Can only be used in expressions"); }