public SetSiteSettingsOutput SetSiteSettings(SetSiteSettingsInput input) { var groups = input.SiteSettings.GroupBy(e => new { e.Group, e.Key }); if (groups.Any(e => e.Count() > 1)) { throw new UserFriendlyException("设置未保存,不允许添加两个相同(组,键)的设置"); } var keys = groups.Select(e => e.Key); var siteSettings = from siteSetting in _repository.GetAll() from key in keys where siteSetting.Group == key.Group && siteSetting.Key == key.Key select siteSetting; foreach (var dto in input.SiteSettings) { var siteSetting = siteSettings.FirstOrDefault(e => e.Group == dto.Group && e.Key == dto.Key); if (siteSetting == null) { _repository.Insert(new SiteSetting() { Key = dto.Key, Value = dto.Value, DisplayName = dto.DisplayName, Group = dto.Group }); } else { siteSetting.DisplayName = dto.DisplayName; siteSetting.Value = dto.Value; } } return(new SetSiteSettingsOutput()); }
public SetSiteSettingsOutput SetSiteSettings(SetSiteSettingsInput input) { var groupBys = input.SiteSettings.GroupBy(e => new { e.Group, e.Key }); if (groupBys.Any(e => e.Count() > 1)) { throw new UserFriendlyException("设置未保存,不允许添加两个相同(组,键)的设置"); } var groups = input.SiteSettings.Select(e => e.Group); var keys = input.SiteSettings.Select(e => e.Key); // 输出 Sql 没问题 var siteSettings = _repository.GetAll().Where(e => groups.Contains(e.Group) && keys.Contains(e.Key)).ToList(); foreach (var dto in input.SiteSettings) { var siteSetting = siteSettings.FirstOrDefault(e => e.Group == dto.Group && e.Key == dto.Key); if (siteSetting == null) { _repository.Insert(new SiteSetting() { Key = dto.Key, Value = dto.Value, DisplayName = dto.DisplayName, Group = dto.Group }); } else { siteSetting.DisplayName = dto.DisplayName; siteSetting.Value = dto.Value; } } return(new SetSiteSettingsOutput()); }