private static NavigationCollectionRepository <Author, ICollection <Book>, Book> GetBooksNavRepo(Author author)
        {
            var item = new AlreadyLoadedItem <Author>(author, null);
            var repo = new NavigationCollectionRepository <Author, ICollection <Book>, Book>(item, a => a.Books, new DefaultNavigationSetter <Author, ICollection <Book> >(a => a.Books));

            return(repo);
        }
예제 #2
0
        public async Task <Acknowledgment> DeleteAllAsync(IRestCollectionQuery query)
        {
            _context.Transaction.StartTransaction();
            await _context.Repository.InitializeAsync();

            var queryBuilder         = new ContextQueryBuilder <TItem>(_context, query);
            IQueryable <TItem> items = queryBuilder.BuildQueryable();

            foreach (TItem item in items.ToList())
            {
                var loadedItem = new AlreadyLoadedItem <TItem>(item, string.Empty);

                if (!_context.AuthorizationChecker.CanDeleteItem(loadedItem))
                {
                    throw new NotAuthorizedForItemException(AuthorizableVerb.Delete);
                }

                _context.Repository.MarkDeleted(item);
            }

            await _context.Transaction.SaveChangesAsync();

            return(new Acknowledgment());
        }