Hoy les presento cómo preparar nuestra aplicación (desde cero) en modo Code First.
Crear solución
mkdir dummy && cd dummy
dotnet new sln
Crear proyecto
mkdir api && cd api
dotnet new webapi
Linkear proyecto a la solución
dotnet sln dummy.sln add ./api/api.csproj
Entity Framework
cd login
dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore --version 5.0.11
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 5.0.11
dotnet add package Microsoft.EntityFrameworkCore.Design --version 5.0.11
Crear modelo
using System;
using System.Collections.Generic;
namespace api.Models
{
public class UserModel
{
public Guid Id { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string Password { get; set; }
public DateTime Rol { get; set; }
}
}
Crear contexto
using Microsoft.EntityFrameworkCore;
namespace api.Models
{
public class ApiContext : DbContext
{
public ApiContext(DbContextOptions<ApiContext> options) : base(options)
{
}
public DbSet<UserModel> Users { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UserModel>().ToTable("User");
}
}
}
Modificar Startup.cs
using api.Models;
using Microsoft.EntityFrameworkCore;
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApiContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "login", Version = "v1" });
});
}
Modificar appsettings.json
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=Dummy;User Id=sa;Password=PwD;"
}
Crear clase para migración
dotnet ef migrations add InitialCreate
Ejecutar migrador
Antes de la ejecución, debe poseer la base creada
dotnet ef database update
Generar controller
Con code generator
dotnet tool install -g dotnet-aspnet-codegenerator --version 5.0.2
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version 5.0.2
dotnet build
(copiar por única vez)
mkdir Templates && mkdir Templates/ControllerGenerator
cp -r /home/$USER/.nuget/packages/microsoft.visualstudio.web.codegenerators.mvc/5.0.2/Templates/ControllerGenerator/* ./Templates/ControllerGenerator
dotnet aspnet-codegenerator controller -name UserController -async -api -m UserModel -dc ApiContext -outDir Controllers -nv -f
Ejecutar
dotnet run