public async Task <ShellDescriptor> CreateAsync(IEnumerable <ShellFeature> enabledFeatures, IEnumerable <ShellParameter> parameters, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); enabledFeatures = enabledFeatures ?? new List <ShellFeature>(); parameters = parameters ?? new List <ShellParameter>(); var shellDescriptor = new ShellDescriptor { SerialNumber = 1 }; shellDescriptor.Features = enabledFeatures.ToList(); shellDescriptor.Parameters = parameters.ToList(); await ShellDescriptorSet.AddAsync(shellDescriptor); await SaveChanges(cancellationToken); return(shellDescriptor); }
public async Task <ShellDescriptor> UpdateAsync(int shellDescriptorId, IEnumerable <ShellFeature> enabledFeatures, IEnumerable <ShellParameter> parameters, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); enabledFeatures = enabledFeatures ?? new List <ShellFeature>(); parameters = parameters ?? new List <ShellParameter>(); var model = await ShellDescriptors.FirstOrDefaultAsync(c => c.Id == shellDescriptorId); ShellFeatureSet.RemoveRange(model.Features); ShellParameterSet.RemoveRange(model.Parameters); await SaveChanges(cancellationToken); model.SerialNumber++; model.Features = enabledFeatures.ToList(); model.Parameters = parameters.ToList(); ShellDescriptorSet.Update(model); await SaveChanges(cancellationToken); return(model); }