Denna guide visar hur du skapar ett Minimal Web API i .NET med SQLite och Entity Framework Core, samt hur du exponerar och testar API:et med OpenAPI via Scalar — ett modernt alternativ till Swagger UI.
- .NET 6 eller senare installerad. Jag körde .Net 9
- En utvecklingsmiljö som kan köra .NET-projekt (Visual Studio, VS Code eller CLI)
- Grundläggande kunskap om C#, Web API och Entity Framework Core
Installera följande paket:
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.Relational
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package DotNetEnv
dotnet add package Scalar.AspNetCoreDokumentation:
- EF Core installation: learn.microsoft.com/ef/core/get-started/overview/install
- Modul: Build a web API with a database in ASP.NET Core
dotnet new webapi -n MinimalApiWithScalar
cd MinimalApiWithScalarSe ovanstående dotnet add package-kommandon.
Exempel:
using Microsoft.EntityFrameworkCore;
namespace MinimalApiWithScalar.Data;
public class TodoItem
{
    public int Id { get; set; }
    public string? Name { get; set; }
    public bool IsComplete { get; set; }
}
public class TodoDb : DbContext
{
    public TodoDb(DbContextOptions<TodoDb> options) : base(options) { }
    public DbSet<TodoItem> Todos => Set<TodoItem>();
}using Microsoft.EntityFrameworkCore;
using Scalar.AspNetCore;
using DotNetEnv; // <-- Lägg till för att ha DB_CONNECTION i .env
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOpenApi();
Env.Load(); // <-- Lägg till för att ha DB_CONNECTION i .env
var connectionString = Environment.GetEnvironmentVariable("DB_CONNECTION"); // <-- Lägg till för att ha DB_CONNECTION i .env
builder.Services.AddDbContext<TodoDb>(options =>
    options.UseSqlite("connectionString")); // <-- Lägg till för att ha DB_CONNECTION i .env
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
    app.MapOpenApi();
    app.MapScalarApiReference();
}
app.MapGet("/todos", async (TodoDb db) => await db.Todos.ToListAsync());
app.MapPost("/todos", async (TodoDb db, TodoItem item) =>
{
    db.Todos.Add(item);
    await db.SaveChangesAsync();
    return Results.Created($"/todos/{item.Id}", item);
});
app.Run();Med innehållet och namnet du vill ha på databasen. Och göm den med .gitignore. Ersätt SERVERNAMN med namnet på din SQL Server likaså DATABASNAMN med namnet du vill ha på din databas. Observera att du inte behöver skapa databasen innan utan det gör migrationen nedan. Blir säkert en konflikt om du har en databas med samma namn och som du inte har skapat med EF.
DB_CONNECTION=Server=SERVERNAMN\SQLEXPRESS;Database=DATABASNAMN;Trusted_Connection=True;Trust Server Certificate=True;
Innan du kör migrationer, kontrollera att verktyget Entity Framework CLI är installerat.
dotnet-ef --versionOm detta fungerar, installera eller uppdatera dotnet-ef:
dotnet tool install --global dotnet-ef
dotnet tool update --global dotnet-ef
dotnet ef --versionOm dotnet ef inte känns igen, starta om PowerShell/VS Code och kontrollera att följande sökväg finns i PATH:
%USERPROFILE%\.dotnet\tools
dotnet ef migrations add InitialCreate
dotnet ef database updatedotnet runÖppna sedan i webbläsaren:
👉 https://localhost:5001/scalar/v1 (port:5001 du kan ha något annat)
Där hittar du Scalar-gränssnittet med din OpenAPI-specifikation (ersätter Swagger).
Scalar är ett snyggt, modernt alternativ till Swagger UI.
Fördelar:
- Snabb rendering (ingen tung JS som Swagger UI)
- Mörkt och ljust tema
- Bättre kodhighlighting
- Genererad dokumentation direkt från dina Minimal API-endpoints
Mer info: https://scalar.com/openapi
- För produktion: avaktivera app.MapScalarApiReference()utanförDevelopment-miljö.
- Kontrollera att SQLServer tar emot data.
- Använd dotnet watch rununder utveckling för snabbare feedback.
✅ Minimal API
✅ SQLServer via EF Core
✅ OpenAPI-dokumentation
✅ Scalar istället för Swagger UI
✅ CLI-version & dotnet-ef-kontroll inlagd