Example #1
0
        public async Task <RssRecord> AddAsync(RssRecord record, CancellationToken cancellationToken)
        {
            if (record == null)
            {
                throw new ArgumentNullException(nameof(record));
            }
            if (record.Id > 0)
            {
                throw new ArgumentOutOfRangeException(nameof(record));
            }

            using (var context = _contextFactory())
            {
                await context.RssRecords.AddAsync(record, cancellationToken);

                await context.SaveChangesAsync(cancellationToken);

                return(record);
            }
        }
Example #2
0
        public async Task UpdateAsync(
            RssRecord record, IReadOnlyList <string> propertyNames, CancellationToken cancellationToken)
        {
            if (record == null)
            {
                throw new ArgumentNullException(nameof(record));
            }
            if (record.Id < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(record));
            }
            if (propertyNames == null)
            {
                throw new ArgumentNullException(nameof(propertyNames));
            }
            if (propertyNames.Count == 0)
            {
                throw new ArgumentOutOfRangeException(nameof(propertyNames));
            }

            using (var context = _contextFactory())
            {
                var entity = context.RssRecords.Attach(record);

                foreach (var propertyName in propertyNames)
                {
                    var property = entity.Property(propertyName);

                    if (property == null)
                    {
                        throw new InvalidOperationException();
                    }

                    property.IsModified = true;
                }

                await context.SaveChangesAsync(cancellationToken);
            }
        }