CREATE
TABLE
Employee (
EmployeeID
int
IDENTITY(1,1)
PRIMARY
KEY
,
Name
varchar
(20)
NOT
NULL
City
Department
Gender
(6)
)
Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Scaffold-DbContext "Your connection string here" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Employee
using
BlazorSPA.Shared.Models;
Microsoft.EntityFrameworkCore;
System;
System.Collections.Generic;
System.Linq;
System.Threading.Tasks;
namespace
BlazorSPA.Server.DataAccess
{
public
class
EmployeeDataAccessLayer
myTestDBContext db =
new
myTestDBContext();
//To Get all employees details
IEnumerable<Employee> GetAllEmployees()
try
return
db.Employee.ToList();
}
catch
throw
;
//To Add new employee record
void
AddEmployee(Employee employee)
db.Employee.Add(employee);
db.SaveChanges();
//To Update the records of a particluar employee
UpdateEmployee(Employee employee)
db.Entry(employee).State = EntityState.Modified;
//Get the details of a particular employee
Employee GetEmployeeData(
id)
Employee employee = db.Employee.Find(id);
employee;
//To Delete the record of a particular employee
DeleteEmployee(
Employee emp = db.Employee.Find(id);
db.Employee.Remove(emp);
BlazorSPA.Server.DataAccess;
Microsoft.AspNetCore.Mvc;
BlazorSPA.Server.Controllers
EmployeeController : Controller
EmployeeDataAccessLayer objemployee =
EmployeeDataAccessLayer();
[HttpGet]
[Route(
"api/Employee/Index"
)]
IEnumerable<Employee> Index()
objemployee.GetAllEmployees();
[HttpPost]
"api/Employee/Create"
Create([FromBody] Employee employee)
if
(ModelState.IsValid)
objemployee.AddEmployee(employee);
"api/Employee/Details/{id}"
Employee Details(
objemployee.GetEmployeeData(id);
[HttpPut]
"api/Employee/Edit"
Edit([FromBody]Employee employee)
objemployee.UpdateEmployee(employee);
[HttpDelete]
"api/Employee/Delete/{id}"
Delete(
objemployee.DeleteEmployee(id);
System.Net.Http;
Microsoft.AspNetCore.Blazor;
Microsoft.AspNetCore.Blazor.Components;
Microsoft.AspNetCore.Blazor.Services;
BlazorSPA.Client.Pages
EmployeeDataModel : BlazorComponent
[Inject]
protected
HttpClient Http {
get
set
; }
IUriHelper UriHelper {
[Parameter]
string
paramEmpID {
; } =
"0"
action {
List<Employee> empList =
List<Employee>();
Employee emp =
Employee();
title {
override
async Task OnParametersSetAsync()
(action ==
"fetch"
await FetchEmployee();
this
.StateHasChanged();
else
"create"
title =
"Add Employee"
emp =
(paramEmpID !=
"edit"
"Edit Employee"
"delete"
"Delete Employee"
emp = await Http.GetJsonAsync<Employee>(
"/api/Employee/Details/"
+ Convert.ToInt32(paramEmpID));
async Task FetchEmployee()
"Employee Data"
empList = await Http.GetJsonAsync<List<Employee>>(
);
async Task CreateEmployee()
(emp.EmployeeId != 0)
await Http.SendJsonAsync(HttpMethod.Put,
, emp);
await Http.SendJsonAsync(HttpMethod.Post,
"/api/Employee/Create"
UriHelper.NavigateTo(
"/employee/fetch"
async Task DeleteEmployee()
await Http.DeleteAsync(
"api/Employee/Delete/"
Cancel()
@page "/employee/{action}/{paramEmpID}"
@page "/employee/{action}"
@inherits EmployeeDataModel
<
h1
>@title</
>
@if (action == "fetch")
p
a
href
=
"/employee/create"
>Create New</
</
@if (action == "create" || action == "edit")
form
table
"form-group"
tr
td
label
for
"Name"
"control-label"
>Name</
input
type
"text"
"form-control"
bind
"@emp.Name"
/>
width
"20"
> </
"Department"
>Department</
"@emp.Department"
"Gender"
>Gender</
select
asp-for
"@emp.Gender"
option
value
""
>-- Select Gender --</
"Male"
>Male</
"Female"
>Female</
"City"
>City</
"@emp.City"
></
"submit"
"btn btn-success"
onclick="@(async () => await CreateEmployee())" style="width:220px;" value="Save" />
"btn btn-danger"
onclick
"@Cancel"
style
"width:220px;"
"Cancel"
else if (action == "delete")
div
"col-md-4"
"table"
>@emp.Name</
>@emp.Gender</
>@emp.Department</
>@emp.City</
onclick="@(async () => await DeleteEmployee())" value="Delete" />
"btn"
@if (empList == null)
><
em
>Loading...</
'table'
thead
th
>ID</
tbody
@foreach (var emp in empList)
>@emp.EmployeeId</
'/employee/edit/@emp.EmployeeId'
>Edit</
> |
'/employee/delete/@emp.EmployeeId'
>Delete</
<div
"top-row pl-4 navbar navbar-dark"
<a
"navbar-brand"
href=
"/"
>BlazorSPA</a>
<button
"navbar-toggler"
onclick=@ToggleNavMenu>
<span
"navbar-toggler-icon"
></span>
</button>
</div>
=@(collapseNavMenu ?
"collapse"
:
null
) onclick=@ToggleNavMenu>
<ul
"nav flex-column"
<li
"nav-item px-3"
<NavLink
"nav-link"
Match=NavLinkMatch.All>
"oi oi-home"
aria-hidden=
"true"
></span> Home
</NavLink>
</li>
"oi oi-list-rich"
></span> Employee data
</ul>
@functions {
bool
collapseNavMenu =
true
ToggleNavMenu()
collapseNavMenu = !collapseNavMenu;