A Entity Framework Core könnyed hozzáférést biztosít az adatbázisokhoz.
Parancssoros eszköz használatához segítség:
dotnet tool install --global dotnet-ef
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.
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/)
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 MySql.EntityFrameworkCore és MySql.Data.EntityFramework nem működik. Helyette ezt használjuk: Pomelo.EntityFrameworkCore.MySql
Info:
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
{ "ConnectionStrings": { "DefaultConnection": "server=localhost;user=muni;password=titok;database=muni" } }
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); }); //...
using Microsoft.EntityFrameworkCore; namespace App01.Data { public class DataContext : DbContext { } }
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
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()); } } }