oktatas:programozas:csharp:dotnetcore:web_api:entity_framework_core
Tartalomjegyzék
.Net Core Web Entity Framework
- Szerző: Sallai András
- Copyright © Sallai András, 2022
- Web: https://szit.hu
Bevezetés
A Entity Framework Core könnyed hozzáférést biztosít az adatbázisokhoz.
Parancssoros eszköz használatához segítség:
Előkészítés
dotnet tool install --global dotnet-ef
Adott verzió telepítése:
dotnet tool install --global dotnet-ef --version 3.0 dotnet tool install --global dotnet-ef --version 5.0 dotnet tool install --global dotnet-ef --version 6.0 dotnet tool install --global dotnet-ef --version 7.0 dotnet tool install --global dotnet-ef --version 8.0
A parancsot felhasználóként kell kiadni Linuxon és Windowson is.
Hova telepszik?
- Linux/macOS $HOME/.dotnet/tools
- Windows %USERPROFILE%\.dotnet\tools
Linuxos Shellek
A dotnet-ef útvonalba helyezése:
Bash, zsh, csh vagy tcsh shell esetén:
bash/zsh:
export PATH="$PATH:$HOME/.dotnet/tools/"
csh/tcsh:
set path = ($path $HOME/.dotnet/tools/)
Függőségek
Adjuk a projekthez a függőségeket:
dotnet add package Microsoft.EntityFrameworkCore.Design dotnet add package Microsoft.EntityFrameworkCore dotnet add package Pomelo.EntityFrameworkCore.MySql
- A Design kell a migrációs fájlok készítéséhez.
Nem működnek:
A MySql.EntityFrameworkCore és MySql.Data.EntityFramework nem működik. Helyette ezt használjuk: Pomelo.EntityFrameworkCore.MySql
Info:
Ha már van újabb keretrendszer, de nálunk például még csak 7.x van:
dotnet add package Microsoft.EntityFrameworkCore.Design --version 7.0 dotnet add package Microsoft.EntityFrameworkCore --version 7.0 dotnet add package Pomelo.EntityFrameworkCore.MySql --version 7.0
Kapcsolat
- appsettings.Development.json
{ "ConnectionStrings": { "DefaultConnection": "server=localhost;user=muni;password=titok;database=muni" } }
- Program.cs
global using App01.Data; global using Microsoft.EntityFrameworkCore; global using Pomelo.EntityFrameworkCore.MySql; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); builder.Services.AddDbContext<DataContext>(options => { var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); var serverVersion = new MySqlServerVersion(new Version(8, 0, 27)); options.UseMySql(connectionString, serverVersion); }); //...
DataContext
- Data/DataContext.cs
using Microsoft.EntityFrameworkCore; namespace App01.Data { public class DataContext : DbContext { } }
- Data/DataContext.cs
using Microsoft.EntityFrameworkCore; using Pomelo.EntityFrameworkCore.MySql; namespace App01.Data { public class DataContext : DbContext { public DbSet<Employee> Employees { get; set; } = null!; public DataContext(DbContextOptions<DataContext> options) : base(options) {} } }
Migrációs fájlok készítése:
dotnet ef migrations add InitialCreate
Tábla létrehozása:
dotnet ef database update
API adatbázishoz kötése
- Controllers/EmployeeController.cs
using Microsoft.AspNetCore.Mvc; namespace App01.Controllers { [Route("api/[controller]")] [ApiController] public class EmployeeController : ControllerBase { private readonly DataContext _context; public EmployeeController(DataContext context) { _context = context; } [HttpGet] public async Task<ActionResult<List<Employee>>> Get() { return Ok(await _context.Employees.ToListAsync()); } [HttpGet("{id}")] public async Task<ActionResult<List<Employee>>> Get(int id) { var dbEmployee = await _context.Employees.FindAsync(id); if (dbEmployee == null) { return BadRequest("A dolgozó nem található"); } return Ok(dbEmployee); } [HttpPost] public async Task<ActionResult<List<Employee>>> AddEmployee(Employee employee) { _context.Employees.Add(employee); await _context.SaveChangesAsync(); return Ok(await _context.Employees.ToListAsync()); } [HttpPut] public async Task<ActionResult<List<Employee>>> UpdateEmployee(Employee request) { var dbEmployee = await _context.Employees.FindAsync(request.Id); if (dbEmployee == null) { return BadRequest("A dolgozó nem található"); } dbEmployee.Name = request.Name; dbEmployee.City = request.City; dbEmployee.Salary = request.Salary; await _context.SaveChangesAsync(); _context.Employees.Remove(dbEmployee); await _context.SaveChangesAsync(); return Ok(await _context.Employees.ToListAsync()); } [HttpDelete("{id}")] public async Task<ActionResult<List<Employee>>> Delete(int id) { var dbEmployee = await _context.Employees.FindAsync(id); if (dbEmployee == null) { return BadRequest("A dolgozó nem található"); } _context.Employees.Remove(dbEmployee); await _context.SaveChangesAsync(); return Ok(await _context.Employees.ToListAsync()); } } }
GitHub
oktatas/programozas/csharp/dotnetcore/web_api/entity_framework_core.txt · Utolsó módosítás: 2024/02/06 12:05 szerkesztette: admin