ASP .NET 6에서 우아한 데이터 시드
이 빠른 게시물에서는 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에서 찾을 수 있습니다.
다음 시간까지 이웃을 사랑하고 자신을 사랑하십시오!
Reference
이 문제에 관하여(ASP .NET 6에서 우아한 데이터 시드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/edcsu/elegant-seeding-of-data-in-asp-net-6-gb0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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에서 찾을 수 있습니다.
다음 시간까지 이웃을 사랑하고 자신을 사랑하십시오!
Reference
이 문제에 관하여(ASP .NET 6에서 우아한 데이터 시드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/edcsu/elegant-seeding-of-data-in-asp-net-6-gb0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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에서 찾을 수 있습니다.
다음 시간까지 이웃을 사랑하고 자신을 사랑하십시오!
Reference
이 문제에 관하여(ASP .NET 6에서 우아한 데이터 시드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/edcsu/elegant-seeding-of-data-in-asp-net-6-gb0
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseInMemoryDatabase("inmemo"));
var app = builder.Build();
SeedData.PopulateDb(app);
app.Run();
Reference
이 문제에 관하여(ASP .NET 6에서 우아한 데이터 시드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/edcsu/elegant-seeding-of-data-in-asp-net-6-gb0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)