diff --git a/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingProvider.cs b/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingProvider.cs index 710e64539a..01791bef00 100644 --- a/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingProvider.cs +++ b/framework/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingProvider.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Volo.Abp.DependencyInjection; @@ -73,6 +73,10 @@ public class SettingProvider : ISettingProvider, ITransientDependency } settingDefinitions.RemoveAll(x => notNullValues.Any(v => v.Name == x.Name)); + if (!settingDefinitions.Any()) + { + break; + } } return result.Values.ToList(); @@ -106,4 +110,4 @@ public class SettingProvider : ISettingProvider, ITransientDependency return null; } -} +} \ No newline at end of file diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs index 1442126fe6..44655c8cb0 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManager_Basic_Tests.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Shouldly; using Volo.Abp.Settings; using Xunit; @@ -46,6 +46,15 @@ public class SettingManager_Basic_Tests : SettingsTestBase settingValues.ShouldContain(sv => sv.Name == "SettingNotSetInStore" && sv.Value == "default-value"); } + [Fact] + public async Task Should_Get_All_By_Names_Base_Store_Values() + { + var settingValues = await _settingProvider.GetAllAsync(new []{ "MySetting1", "MySetting2" }); + settingValues.Count.ShouldBe(2); + settingValues.ShouldContain(sv => sv.Name == "MySetting1" && sv.Value == "42"); + settingValues.ShouldContain(sv => sv.Name == "MySetting2" && sv.Value == "default-store-value"); + } + [Fact] public async Task Should_Set_Global_Value() { @@ -54,4 +63,4 @@ public class SettingManager_Basic_Tests : SettingsTestBase (await _settingManager.GetOrNullGlobalAsync("MySetting1")).ShouldBe("43"); (await _settingProvider.GetOrNullAsync("MySetting1")).ShouldBe("43"); } -} +} \ No newline at end of file