ASP .NET 6에서 우아한 데이터 시드

11469 단어 dotnetdatabasecsharp
데이터베이스에 데이터를 시드하는 것은 백엔드 개발자가 개발 단계에서 구축 중인 API를 초기화해야 할 때 직면하는 할 일 중 하나입니다. 이것은 작업할 백엔드 및 프런트 엔드 팀 데이터와 어느 정도 필요한 종단 간 통합을 제공합니다. 이렇게 하면 작업 프런트 엔드 팀이 목업을 참조하지 않고도 주어진 API와 쉽게 통합할 수 있습니다.

이 빠른 게시물에서는 ASP.NET 6 Web API의 모든 데이터베이스에 데이터를 시드하는 방법을 보여줍니다.

초기 설정



일단created your Web API Entity Framework NuGet 패키지를 추가해야 합니다.

dotnet add package Microsoft.EntityFrameworkCore --version 6.0.3
dotnet add package Microsoft.EntityFrameworkCore.Abstractions --version 6.0.3 
dotnet add package Microsoft.EntityFrameworkCore.Analyzers --version 6.0.3
dotnet add package Microsoft.EntityFrameworkCore.Design --version 6.0.3 
dotnet add package Microsoft.EntityFrameworkCore.InMemory --version 6.0.3
dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 6.0.3 
dotnet add package Microsoft.EntityFrameworkCore.Tools --version 6.0.3


항목 추가



그런 다음 API에서 사용할 엔터티를 만듭니다. 여기에서는 이전 단계의 새 웹 API 프로젝트와 함께 제공되는 기본 WeatherForecast 모델을 사용했습니다.

public class WeatherForecast 
{
     public DateTime Date { get; set; }
     public int TemperatureC { get; set; }
     public string? Summary { get; set; }
}


ApplicationDbContext 추가




using Microsoft.EntityFrameworkCore;

namespace SeedWebApplication.Data.Context
{
#nullable disable
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext()
        {
        }

        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
        {
        }

        public DbSet<WeatherForecast> WeatherForecasts { get; set; }
    }
}


시드 클래스 만들기



데이터베이스에 몇 개의 레코드를 추가하는 클래스입니다.

namespace SeedWebApplication.Data
{
    public static class SeedData
    {
        public static void PopulateDb(IApplicationBuilder app)
        {
            using var serviceScope = app.ApplicationServices.CreateScope();
            AddInitialData(serviceScope.ServiceProvider.GetService<ApplicationDbContext>()!);
        }

        private static void AddInitialData(ApplicationDbContext context)
        {
            if (!context.WeatherForecasts.Any())
            {
                var summaries = new[]
                {
                    "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
                };

                var seedForecasts = Enumerable.Range(1, 20).Select(index =>
                       new WeatherForecast
                       {
                           Id = Guid.NewGuid(),
                           Date = DateTime.Now.AddDays(index),
                           Created = DateTime.Now.AddDays(-7),
                           Updated = DateTime.Now.AddDays(-5),
                           TemperatureC = Random.Shared.Next(-20, 55),
                           Summary = summaries[Random.Shared.Next(summaries.Length)]
                      })
                    .ToList();

                context.WeatherForecasts.AddRange(seedForecasts);
                context.SaveChanges();
                Console.WriteLine("Seeded data to the Database");
            }
        }
    }
}



program.cs 수정




var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDbContext<ApplicationDbContext>(options =>
         options.UseInMemoryDatabase("inmemo"));


var app = builder.Build();


SeedData.PopulateDb(app);

app.Run();



그리고 예, 데이터베이스에 데이터를 성공적으로 시드했습니다!

전체 솔루션의 소스 코드는 myGithub에서 찾을 수 있습니다.

다음 시간까지 이웃을 사랑하고 자신을 사랑하십시오!

좋은 웹페이지 즐겨찾기