- Skapa ett nytt projekt
- Installera NuGet paket
- Scaffold DbContext
- Flytta connectionsträngen
- Lägg till DbContext i startup.cs
- Lägg till en controller
- Genererade filer
- Lägg till en länk i navbaren
- Starta webbapplikationen
Skapa ett nytt projekt i Visual Studio Community.
Typ | ASP.NET Core web app (Model-View-Controller) |
Framework | .NET 5.0 (current) |
Authentication Type | None |
Enable for HTTPS | Ja |
Installera följande nuGet paket.
Paket | Version |
---|---|
Microsoft.EntityFrameworkCore | 5.0.16 |
Microsoft.EntityFrameworkCore.SqlServer | 5.0.16 |
Microsoft.EntityFrameworkCore.Tools | 5.0.16 |
Install-Package Microsoft.EntityFrameworkCore -v 5.0.16
dotnet add package Microsoft.EntityFrameworkCore -v 5.0.16
Install-Package Microsoft.EntityFrameworkCore.SqlServer -v 5.0.16
dotnet add package Microsoft.EntityFrameworkCore.SqlServer -v 5.0.16
Install-Package Microsoft.EntityFrameworkCore.Tools -v 5.0.16
dotnet add package Microsoft.EntityFrameworkCore.Tools -v 5.0.16
Kör kommandot scaffold-DbContext mot en befintlig databas.
Exempel
scaffold-DbContext "Server=localhost;Database=carDb;User Id=sa;Password=P@ssw0rd;" Microsoft.EntityFrameworkCore.SqlServer -o Models
dotnet ef dbcontext Scaffold "Server=locahost;Database=carDb;User ID=sa;Password=P@ssw0rd; "Microsoft.EntityFrameworkCore.SqlServer -o Models
Flytta din connectionstring från context-filen till appsettings.json
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("server=localhost;database=carDb;user id=sa;Password=P@ssw0rd;");
}
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*"
}
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"connString": "Server=localhost;database=carDb;User Id=sa;Password=P@ssw0rd;"
}
}
Öppna startup.cs och lägg till din dbcontext.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<carDbContext>(
options => options.UseSqlServer(
Configuration.GetConnectionString("connString")));
}
Kom ihåg att referera till EntityFrameworkCore och mappen där din DbContext finns.
Exempel
using Microsoft.EntityFrameworkCore; using WebApplication6.Models;
- Högerklicka på mappen Controllers
- Välj Add -> Controller...
- Välj MVC Controller with views, using Entity Framework
Model class | Den klass du vill skapa en controller för |
Data context class | Din DbContext |
Generate views | Genererar vyer för controllern |
Reference script libraries | Inkluderar referenser til ev. script |
Use a layout page | Använder grundmallen |
Controller name | klassnamn + Controller |
Model class | Brand |
Data context class | carDbContext |
Generate views | Ja |
Reference script libraries | Ja |
Use a layout page | Ja |
Controller name | BrandsController |
Efter att controllern skapats har det tillkommit en del nya filer.
I mappen Controllers finns nu BrandsController.cs
Filen innehåller all logik för kommunikation mellan views och models.
public class BrandsController : Controller { private readonly carDbContext _context; public BrandsController(carDbContext context) { _context = context; } // GET: Brands public async Task<IActionResult> Index() { return View(await _context.Brands.ToListAsync()); } }
I mappen Views har en ny mapp skapats - Brands.
Denna mappen innehåller samtliga vyer för Brands.
- Create.cshtml
- Vy för att skapa en ny instans av Brand
- Delete.cshtml
- Vy för att radera en instans av Brand
- Details.cshtml
- Vy för att se all information om en instans av Brand
- Edit.cshtml
- Vy för att editera en instans av Brand.
- index.cshtml
- Startsida för Brands.
- Listar alla instanser.
- Startsida för Brands.
@model WebApplication6.Models.Brand @{ ViewData["Title"] = "Details"; } <h1>Details</h1> <div> <h4>Brand</h4> <hr /> <dl class="row"> <dt class = "col-sm-2"> @Html.DisplayNameFor(model => model.BrandName) </dt> <dd class = "col-sm-10"> @Html.DisplayFor(model => model.BrandName) </dd> </dl> </div> <div> <a asp-action="Edit" asp-route-id="@Model.Id">Edit</a> | <a asp-action="Index">Back to List</a> </div>
Navigera till _Layout.cshtml
Views -> Shared -> _Layout.csthml
Denna filen är grundmallen för samtliga vyer i projektet.
<li class="nav-item">
<a class="nav-link text-dark" asp-controller="[ControllerNamn]" asp-action="[MetodNamn]">[Länktext]</a>
</li>
<li class="nav-item"> <a class="nav-link text-dark" asp-controller="Brands" >asp-action="Index">Brands</a> </li>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
</ul>
</div>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-controller="Brands" asp-action="Index">Brands</a>
</li>
</ul>
</div>
För att starta din webbapplikation trycked du på den "vanliga" startknappen.
Det bör stå IIS Express på knappen.
Tänk på att webbapplikationen nu är kopplad mot din databas.
Dvs. alla objekt du skapar/raderar/ändrar kommer att appliceras mot databasen.