Элегантная загрузка данных в ASP .NET 6

Посев данных в базу данных — это одна из тех задач, с которыми сталкивается бэкенд-разработчик, когда ему необходимо инициализировать API, который он создает на этапе разработки. Это дает бэкенд- и фронт-энд-командам данные для работы и, в определенной степени, необходимую интеграцию. Это облегчает работу front-end команды по интеграции с данным API без обращения к макетам.

В этой небольшой заметке я покажу вам, как с помощью ASP.NET 6 Web API залить данные в любую базу данных.

Первоначальная настройка

После создания 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. Здесь я использовал модель WeatherForecast по умолчанию, которая поставляется с новым проектом Web API из предыдущего шага.

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; }
    }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Создайте класс seed

Это класс, который добавляет несколько записей в вашу базу данных.

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();

Вход в полноэкранный режим Выход из полноэкранного режима

И да, вы успешно засеяли данные в вашу базу данных!

Исходный код для полного решения можно найти на моем Github

До следующего раза, возлюби ближнего своего, возлюби себя!

Оцените статью
Procodings.ru
Добавить комментарий