Valentínska akcia je tu! Získaj až 80 % extra kreditov ZADARMO na náš interaktívny e-learning. ZISTIŤ VIAC:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

trening ├── Controllers │ └── BooksController.cs ├── Data │ └── AppDbContext.cs ├── Dtos │ ├── BookDto.cs │ ├── CreateBookDto.cs │ └── UpdateBookDto.cs ├── Managers │ └── BookManager.cs ├── Models │ └── Book.cs ├── Repositories │ ├── IBookRepository.cs │ └── BookRepository.cs ├── Program.cs └── appsettings.json Models/Book.cs csharp Копіювати код namespace trening.Models { public class Book { public int Id { get; set; } public string Title { get; set; } public string Author { get; set; } } } Dtos/BookDto.cs csharp Копіювати код namespace trening.Dtos { public class BookDto { public int Id { get; set; } public string Title { get; set; } public string Author { get; set; } } } Dtos/CreateBookDto.cs csharp Копіювати код namespace trening.Dtos { public class CreateBookDto { public string Title { get; set; } public string Author { get; set; } } } Dtos/UpdateBookDto.cs csharp Копіювати код namespace trening.Dtos { public class UpdateBookDto { public string Title { get; set; } public string Author { get; set; } } } Data/AppDbContext.cs csharp Копіювати код using Microsoft.EntityFrameworkCore; using trening.Models; namespace trening.Data { public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<Book> Books { get; set; } } } Repositories/IBookRepository.cs csharp Копіювати код using trening.Models; namespace trening.Repositories { public interface IBookRepository { List<Book> GetAll(); Book? FindById(int id); Book Create(Book book); void Update(Book book); void Delete(Book book); } } Repositories/BookRepository.cs csharp Копіювати код using Microsoft.EntityFrameworkCore; using trening.Data; using trening.Models; namespace trening.Repositories { public class BookRepository : IBookRepository { private readonly AppDbContext dbContext; public BookRepository(AppDbContext dbContext) { this.dbContext = dbContext; } public List<Book> GetAll() { return this.dbContext.Books.ToList(); } public Book? FindById(int id) { return this.dbContext.Books.FirstOrDefault(book => book.Id == id); } public Book Create(Book book) { this.dbContext.Books.Add(book); this.dbContext.SaveChanges(); return book; } public void Update(Book book) { this.dbContext.SaveChanges(); } public void Delete(Book book) { this.dbContext.Books.Remove(book); this.dbContext.SaveChanges(); } } } Managers/BookManager.cs ✅ (тут if + mapping) csharp Копіювати код using trening.Dtos; using trening.Models; using trening.Repositories; namespace trening.Managers { public class BookManager { private readonly IBookRepository bookRepository; public BookManager(IBookRepository bookRepository) { this.bookRepository = bookRepository; } public List<BookDto> getAll() { List<Book> books = this.bookRepository.GetAll(); List<BookDto> bookDtos = new List<BookDto>(); foreach (Book book in books) { BookDto bookDto = new BookDto(); bookDto.Id = book.Id; bookDto.Title = book.Title; bookDto.Author = book.Author; bookDtos.Add(bookDto); } return bookDtos; } public BookDto? findById(int id) { Book? book = this.bookRepository.FindById(id); if (book == null) return null; BookDto bookDto = new BookDto(); bookDto.Id = book.Id; bookDto.Title = book.Title; bookDto.Author = book.Author; return bookDto; } public BookDto createBook(CreateBookDto dto) { Book createdBook = new Book(); createdBook.Title = dto.Title; createdBook.Author = dto.Author; createdBook = this.bookRepository.Create(createdBook); BookDto createdBookDto = new BookDto(); createdBookDto.Id = createdBook.Id; createdBookDto.Title = createdBook.Title; createdBookDto.Author = createdBook.Author; return createdBookDto; } public BookDto? updateBook(int id, UpdateBookDto dto) { Book? book = this.bookRepository.FindById(id); if (book == null) return null; book.Title = dto.Title; book.Author = dto.Author; this.bookRepository.Update(book); BookDto updatedBookDto = new BookDto(); updatedBookDto.Id = book.Id; updatedBookDto.Title = book.Title; updatedBookDto.Author = book.Author; return updatedBookDto; } public bool deleteBook(int id) { Book? book = this.bookRepository.FindById(id); if (book == null) return false; this.bookRepository.Delete(book); return true; } } } Controllers/BooksController.cs ✅ (тонкий) csharp Копіювати код using Microsoft.AspNetCore.Mvc; using trening.Dtos; using trening.Managers; namespace trening.Controllers { [ApiController] [Route("api/[controller]")] public class BooksController : ControllerBase { private readonly BookManager bookManager; public BooksController(BookManager bookManager) { this.bookManager = bookManager; } [HttpGet] public ActionResult<List<BookDto>> GetAll() { List<BookDto> books = this.bookManager.getAll(); return Ok(books); } [HttpGet("{id}")] public ActionResult<BookDto> GetById(int id) { BookDto? book = this.bookManager.findById(id); if (book == null) return NotFound(); return Ok(book); } [HttpPost] public ActionResult<BookDto> Create(CreateBookDto dto) { BookDto createdBook = this.bookManager.createBook(dto); return CreatedAtAction( nameof(GetById), new { id = createdBook.Id }, createdBook ); } [HttpPut("{id}")] public ActionResult<BookDto> Update(int id, UpdateBookDto dto) { BookDto? updatedBook = this.bookManager.updateBook(id, dto); if (updatedBook == null) return NotFound(); return Ok(updatedBook); } [HttpDelete("{id}")] public IActionResult Delete(int id) { bool deleted = this.bookManager.deleteBook(id); if (!deleted) return NotFound(); return NoContent(); } } } Program.cs csharp Копіювати код using Microsoft.EntityFrameworkCore; using trening.Data; using trening.Managers; using trening.Repositories; WebApplicationBuilder builder = WebApplication.CreateBuilder(args); builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddDbContext<AppDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddScoped<IBookRepository, BookRepository>(); builder.Services.AddScoped<BookManager>(); WebApplication app = builder.Build(); if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } app.UseHttpsRedirection(); app.MapControllers(); app.Run(); appsettings.json (приклад) json Копіювати код { "ConnectionStrings": { "DefaultConnection": "Server=.;Database=TreningDb;Trusted_Connection=True;TrustServerCertificate=True" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*" }

Aktivity