コード例 #1
0
        public void CreateBookDtoForBook()
        {
            IBook book = NetworkModel.Factory.CreateObject <IBook>();

            book.Id    = 1;
            book.Title = "Firstname";
            Shared.Logic.WebModel.IBook bookDto = Mapper.MapEntities <IBook, Logic.WebModel.IBook>(book);
            Assert.NotNull(bookDto);
            Assert.Equal(book.Id, bookDto.Id);
            Assert.Equal(book.Title, bookDto.Title);
        }
コード例 #2
0
        public Shared.Logic.WebModel.IBook AddBook(Shared.Logic.WebModel.IBook book)
        {
            if (book == null)
            {
                return(null);
            }
            IBook dataBook = Mapper.MapEntities <Shared.Logic.WebModel.IBook, IBook>(book);

            if (_dataContext is null || dataBook is null)
            {
                return(null);
            }

            lock (_authorsLock)
                lock (_booksLock)
                {
                    if (_dataContext.Books.Select(b => b.Id).Contains(book.Id))
                    {
                        return(book);
                    }

                    for (int i = 0; i < dataBook.Authors.Count; ++i)
                    {
                        Data.Entities.IAuthor original = _dataContext.Authors.FirstOrDefault(b => b.Id == dataBook.Authors[i].Id);
                        if (original != null)
                        {
                            dataBook.Authors[i] = original;
                        }
                    }
                    foreach (IAuthor author in dataBook.Authors.Where(b => !_dataContext.Authors.Select(a => a.Id).Contains(b.Id)))
                    {
                        _dataContext.AddAuthor(author);
                    }
                    _dataContext.AddBook(dataBook);
                }
            return(book);
        }