diff --git a/HelloBlazorServer/HelloBlazorServer/Components/Pages/Counter.razor b/HelloBlazorServer/HelloBlazorServer/Components/Pages/Counter.razor index 1a4f8e7..c247b1b 100644 --- a/HelloBlazorServer/HelloBlazorServer/Components/Pages/Counter.razor +++ b/HelloBlazorServer/HelloBlazorServer/Components/Pages/Counter.razor @@ -1,6 +1,12 @@ @page "/counter" +@using HelloBlazorServer.Interfaces +@using HelloBlazorServer.Services +@using HelloBlazorServer.Models @rendermode InteractiveServer +@inject IDatabase GangnamguPopulationService +@* @inject GangnamguPopulationService GangnamguPopulationService2 // 추상화를 위해 서비스 직접 주입 자제*@ + Counter

Counter

@@ -12,6 +18,12 @@ @code { private int currentCount = 0; + protected override void OnInitialized() + { + var data1 = GangnamguPopulationService.Get(); + // var data1 = GangnamguPopulationService2.Get(); + } + private void IncrementCount() { currentCount++; diff --git a/HelloBlazorServer/HelloBlazorServer/Interfaces/IDatabase.cs b/HelloBlazorServer/HelloBlazorServer/Interfaces/IDatabase.cs new file mode 100644 index 0000000..5940310 --- /dev/null +++ b/HelloBlazorServer/HelloBlazorServer/Interfaces/IDatabase.cs @@ -0,0 +1,22 @@ +using HelloBlazorServer.Models; + +namespace HelloBlazorServer.Interfaces +{ + public interface IDatabase + { + // Select All + List? 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); + } +} diff --git a/HelloBlazorServer/HelloBlazorServer/Program.cs b/HelloBlazorServer/HelloBlazorServer/Program.cs index 359d5d5..137eed9 100644 --- a/HelloBlazorServer/HelloBlazorServer/Program.cs +++ b/HelloBlazorServer/HelloBlazorServer/Program.cs @@ -1,9 +1,13 @@ using HelloBlazorServer.Components; using HelloBlazorServer.Components.Account; using HelloBlazorServer.Data; +using HelloBlazorServer.Interfaces; +using HelloBlazorServer.Models; +using HelloBlazorServer.Services; using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; namespace HelloBlazorServer { @@ -41,6 +45,9 @@ namespace HelloBlazorServer builder.Services.AddSingleton, IdentityNoOpEmailSender>(); + builder.Services.AddDbContext(); + builder.Services.AddScoped, GangnamguPopulationService>(); + var app = builder.Build(); // Configure the HTTP request pipeline. diff --git a/HelloBlazorServer/HelloBlazorServer/Services/GangnamguPopulationService.cs b/HelloBlazorServer/HelloBlazorServer/Services/GangnamguPopulationService.cs new file mode 100644 index 0000000..f4ad733 --- /dev/null +++ b/HelloBlazorServer/HelloBlazorServer/Services/GangnamguPopulationService.cs @@ -0,0 +1,70 @@ +using HelloBlazorServer.Interfaces; +using HelloBlazorServer.Models; + +namespace HelloBlazorServer.Services +{ + public class GangnamguPopulationService : IDatabase + { + 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? 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(); + } + } +}