private async Task MakeSureAFeatureBitWithThatNameDoesNotExist(FeatureBitEfDefinition definition) { var existenceCheck = await DbContext.FeatureBitDefinitions.FirstOrDefaultAsync(fb => fb.Name == definition.Name); if (existenceCheck != null) { throw new DataException($"Cannot add. Feature bit with name '{definition.Name}' already exists."); } }
private static void ValidateDefinition(FeatureBitEfDefinition definition) { var validationResults = new List <ValidationResult>(); Validator.TryValidateObject(definition, new ValidationContext(definition), validationResults, true); if (validationResults.Count > 0) { var errorStringBuilder = new StringBuilder(); validationResults.ForEach(e => errorStringBuilder.Append(e.ErrorMessage + Environment.NewLine)); throw new InvalidDataException(errorStringBuilder.ToString()); } }
public async Task <IFeatureBitDefinition> AddAsync(IFeatureBitDefinition definition) { FeatureBitEfDefinition newEntity = definition.ToEfDefinition(); ValidateDefinition(newEntity); await MakeSureAFeatureBitWithThatNameDoesNotExist(newEntity); var entity = await DbContext.FeatureBitDefinitions.AddAsync(newEntity); await DbContext.SaveChangesAsync(); return(entity.Entity); }