Følg vejledningen Kom i gang med Entity Framework.
Efter du har fulgt vejledningen i opgave 1, skal du udvide dit projekte med følgende kode:
Se eksempler i dagens præsentation, og kig i følgende dokumentation:
https://docs.microsoft.com/en-us/ef/core/saving/basic
Nu skal du forsøge at lave en ændring til din model, og efterfølgende opdatere databasen, med en ny migration.
Gør følgende:
dotnet ef migrations add "Category added to TodoTask"dotnet ef database updateKig i databasen for at se om den nye kolonne er kommet på tabellen. Hvad er den sat til på de eksisterende tasks?
Lav ændringer i din kode så nye TodoTasks også får sat en passende category.
Test at det hele virker.
Du skal prøve at lave en migration mere, men denne gang skal skal du oprette en helt ny Model-klasse.
Klassen skal blot hedde User og skal som minimum indeholde et navn på en bruger. Filen skal hedde User.cs. Namespace skal være det samme som for den anden model-klasse.
TodoTask.cs skal opdateres med et ny property der har typen User.
Lav ændringer i resten af koden så den nye User kommer i spil. Notér ned alle steder hvor du har behov for at ændre koden.
Slut af med at lave en migration der tager User med, og test at det hele virker.
dotnet ef migrations remove.dotnet ef database update. Så kører alle migrations på igen fra start af.Næste skridt er at anvende Entity Framework i din frugt-api (eller todo-api) fra tidligere.
En god strategi er at gøre Context-klassen til en “factory service” som kan bruges via “dependency injection”. Se eksempel-koden herunder:
// program.cs
// Tilføj DbContext factory som service
builder.Services.AddDbContext<TaskContext>(options =>
options.UseSqlite(builder.Configuration.GetConnectionString("TaskContextSQLite")));
// ...
// I dine endpoints kan du nu bruge TaskContext som en dependency
app.MapGet("/api/tasks", (TaskContext db) =>
{
return db.Tasks;
});
Koden antager at connection string til databasen er angivet i appsettings.json og appsettings.Development.json. Filerne skal bare oprettes i roden af dit projekt, hvis de ikke findes. Her er et eksempel på indholdet:
{
"ConnectionStrings": {
"TaskContextSQLite": "Data Source=bin/TodoTask.db"
}
}