interface, service and DI

main
Peace 11 months ago
parent 836c3aec65
commit 8a9953616b
  1. 12
      HelloBlazorServer/HelloBlazorServer/Components/Pages/Counter.razor
  2. 22
      HelloBlazorServer/HelloBlazorServer/Interfaces/IDatabase.cs
  3. 7
      HelloBlazorServer/HelloBlazorServer/Program.cs
  4. 70
      HelloBlazorServer/HelloBlazorServer/Services/GangnamguPopulationService.cs

@ -1,6 +1,12 @@
@page "/counter" @page "/counter"
@using HelloBlazorServer.Interfaces
@using HelloBlazorServer.Services
@using HelloBlazorServer.Models
@rendermode InteractiveServer @rendermode InteractiveServer
@inject IDatabase<GangnamguPopulation> GangnamguPopulationService
@* @inject GangnamguPopulationService GangnamguPopulationService2 // 추상화를 위해 서비스 직접 주입 자제*@
<PageTitle>Counter</PageTitle> <PageTitle>Counter</PageTitle>
<h1>Counter</h1> <h1>Counter</h1>
@ -12,6 +18,12 @@
@code { @code {
private int currentCount = 0; private int currentCount = 0;
protected override void OnInitialized()
{
var data1 = GangnamguPopulationService.Get();
// var data1 = GangnamguPopulationService2.Get();
}
private void IncrementCount() private void IncrementCount()
{ {
currentCount++; currentCount++;

@ -0,0 +1,22 @@
using HelloBlazorServer.Models;
namespace HelloBlazorServer.Interfaces
{
public interface IDatabase<T>
{
// Select All
List<T>? Get();
// Select using ID
T GetDetail(int? id);
// Create
void Create(T entity);
// Update
void Update(int? id, T entity);
// Delete
void Delete(int? id);
}
}

@ -1,9 +1,13 @@
using HelloBlazorServer.Components; using HelloBlazorServer.Components;
using HelloBlazorServer.Components.Account; using HelloBlazorServer.Components.Account;
using HelloBlazorServer.Data; using HelloBlazorServer.Data;
using HelloBlazorServer.Interfaces;
using HelloBlazorServer.Models;
using HelloBlazorServer.Services;
using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
namespace HelloBlazorServer namespace HelloBlazorServer
{ {
@ -41,6 +45,9 @@ namespace HelloBlazorServer
builder.Services.AddSingleton<IEmailSender<ApplicationUser>, IdentityNoOpEmailSender>(); builder.Services.AddSingleton<IEmailSender<ApplicationUser>, IdentityNoOpEmailSender>();
builder.Services.AddDbContext<BlazorServerDbContext>();
builder.Services.AddScoped<IDatabase<GangnamguPopulation>, GangnamguPopulationService>();
var app = builder.Build(); var app = builder.Build();
// Configure the HTTP request pipeline. // Configure the HTTP request pipeline.

@ -0,0 +1,70 @@
using HelloBlazorServer.Interfaces;
using HelloBlazorServer.Models;
namespace HelloBlazorServer.Services
{
public class GangnamguPopulationService : IDatabase<GangnamguPopulation>
{
private readonly BlazorServerDbContext _context;
public GangnamguPopulationService(BlazorServerDbContext context)
{
_context = context;
}
public void Create(GangnamguPopulation entity)
{
if (_context.GangnamguPopulations == null)
throw new NullReferenceException();
_context.GangnamguPopulations.Add(entity);
_context.SaveChanges();
}
public void Delete(int? id)
{
if (_context.GangnamguPopulations == null)
throw new NullReferenceException();
var validData = _context.GangnamguPopulations.Find(id);
if (validData == null)
return;
_context.GangnamguPopulations.Remove(validData);
_context.SaveChanges();
}
public List<GangnamguPopulation>? Get()
{
if (_context.GangnamguPopulations == null)
throw new NullReferenceException();
return _context.GangnamguPopulations.ToList();
}
public GangnamguPopulation GetDetail(int? id)
{
if (_context.GangnamguPopulations == null)
throw new NullReferenceException();
var validData = _context.GangnamguPopulations.Find(id);
if (validData == null)
return null;
return validData;
}
public void Update(int? id, GangnamguPopulation entity)
{
if (_context.GangnamguPopulations == null)
throw new NullReferenceException();
var validData = _context.GangnamguPopulations.Find(id);
if (validData == null)
return;
_context.GangnamguPopulations.Update(entity);
_context.SaveChanges();
}
}
}
Loading…
Cancel
Save