예제 #1
0
        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);
        }
예제 #2
0
        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);
        }