첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
다운로드

▶ Models/MovieData.cs

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Linq;

using TestProject.Data;

namespace TestProject.Models
{
    /// <summary>
    /// 영화 데이터
    /// </summary>
    public static class MovieData
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 초기화하기 - Initialize(serviceProvider)

        /// <summary>
        /// 초기화하기
        /// </summary>
        /// <param name="serviceProvider">서비스 제공자</param>
        public static void Initialize(IServiceProvider serviceProvider)
        {
            using(var context = new DatabaseContext(serviceProvider.GetRequiredService<DbContextOptions<DatabaseContext>>()))
            {
                if(context.Movie.Any())
                {
                    return;
                }

                context.Movie.AddRange
                (
                    new Movie
                    {
                        Title       = "When Harry Met Sally",
                        ReleaseDate = DateTime.Parse("1989-2-12"),
                        Genre       = "Romantic Comedy",
                        Price       = 7.99M
                    },
                    new Movie
                    {
                        Title       = "Ghostbusters ",
                        ReleaseDate = DateTime.Parse("1984-3-13"),
                        Genre       = "Comedy",
                        Price       = 8.99M
                    },
                    new Movie
                    {
                        Title       = "Ghostbusters 2",
                        ReleaseDate = DateTime.Parse("1986-2-23"),
                        Genre       = "Comedy",
                        Price       = 9.99M
                    },
                    new Movie
                    {
                        Title       = "Rio Bravo",
                        ReleaseDate = DateTime.Parse("1959-4-15"),
                        Genre       = "Western",
                        Price       = 3.99M
                    }
                );

                context.SaveChanges();
            }
        }

        #endregion
    }
}

 

728x90

 

▶ Program.cs

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;

using TestProject.Models;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    public class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 프로그램 시작하기 - Main(argumentArray)

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        /// <param name="argumentArray">인자 배열</param>
        public static void Main(string[] argumentArray)
        {
            IHost host = CreateHostBuilder(argumentArray).Build();

            using(IServiceScope scope = host.Services.CreateScope())
            {
                IServiceProvider serviceProvider = scope.ServiceProvider;

                try
                {
                    MovieData.Initialize(serviceProvider);
                }
                catch(Exception exception)
                {
                    ILogger<Program> logger = serviceProvider.GetRequiredService<ILogger<Program>>();

                    logger.LogError(exception, "데이터베이스에 데이터 추가시 에러가 발생했습니다.");
                }
            }

            host.Run();
        }

        #endregion
        #region 호스트 빌더 생성하기 - CreateHostBuilder(argumentArray)

        /// <summary>
        /// 호스트 빌더 생성하기
        /// </summary>
        /// <param name="argumentArray">인자 배열</param>
        /// <returns>호스트 빌더</returns>
        public static IHostBuilder CreateHostBuilder(string[] argumentArray) =>
            Host.CreateDefaultBuilder(argumentArray)
                .ConfigureWebHostDefaults
                (
                    builder =>
                    {
                        builder.UseStartup<Startup>();
                    }
                );

        #endregion
    }
}

 

300x250

 

※ TestDB 데이터베이스 생성

1. 비주얼 스튜디오를 실행한다.

2. 비주얼 스튜디오에서 [보기] / [SQL Server 개체 탐색기] 메뉴를 클릭한다.

3. [SQL Server 개체 탐색기]에서 [SQL Server] / [(localdb)MSSQLLocalDB...] / [데이터베이스] 노드 위에서 마우스 오른쪽 버튼을 클릭한다.

4. 컨텍스트 메뉴에서 [새 데이터베이스 추가] 메뉴를 클릭한다.

5. [데이터베이스 만들기] 대화 상자에서 아래와 같이 입력하고 [확인] 버튼을 클릭한다.

6. 비주얼 스튜디오에서 [도구] / [NuGet 패키지 관리자] / [패키지 관리자 콘솔] 메뉴를 클릭한다.

7. [패키지 관리자 콘솔]에서 아래 명령을 실행한다.

Update-Database
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요