I föreläsningen ovan arbetade vi med Codefirst från en Console-applikation. Codefirst är en paradigm, och kan appliceras i alla typer av applikationer - och språk.
Nu kikar vi på Codefirst ur ett ASP.NET Core perspektiv. Vi behandlar bla
I denna övning ska du skapa ett ASP.NET Razor Pages projekt.
public int Id { get; set; }
public string Manufacturer { get; set; }
public string Model { get; set; }
public int Year { get; set; }
public decimal Price { get; set; }
Skapa en ApplicationDbContext med Bil som DbSet
Lägg till ApplicationDbContext i container...samt connectionstring i appsettings.json
Kom ihåg add-migration
Skapa en DataInitializer som gör dbContext.Database.Migrate och anropa den från
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var serviceProvider = scope.ServiceProvider;
var dbContext = serviceProvider.GetRequiredService<ApplicationDbContext>();
DataInitializer.SeedData(dbContext);
}
host.Run();
}
public class DataInitializer
{
public static void SeedData(ApplicationDbContext dbContext)
{
dbContext.Database.Migrate();
Fortsätt på den förra uppgiften.
Lägg till en bool HasRadio till Bil
add-migration
kör och verifiera att databasen uppdateras
skapa en till entitiet: Lastbil. Den kan ha Id, Manufacturer (string), LoadVolumeKvm (int)
add-migration och verifiera att databasen uppdateras vid körning
I din DataInitializer - lägg till SeedBil - och skapa upp 5 stycken bilar.
Se till att de bara skapas ifall de inte redan ligger i databasen.
Lägg också till SeedLastbil. Och skapa upp tre sådana vid uppstart
Verifiera att de läggs in i databasen vid uppstart
Verifiera att det inte blir dubletter när du startar igen
Nu vill man inte ha Manufacturer som en sträng i Bil-tabellen.
Din uppgift är att
skapa en ny entitet (Manufacturer). Den ska bara ha id och namn
Varje bil ska nu ha en property av den typen
Men tänk på att seedning osv måste fixas också, dina 5 bilar ska ha samma manufacturer som innan - dvs seeda de manufacturersr du har idag!
Du kommer behöva göra om logiken i seedngen - Om bil inte finns ELLER om manufacturer är null så ska man seeda kanske?
# | Type | Text |
---|