데이터베이스로 API 생성(EFCore 사용)

이 튜토리얼에서는 엔티티 프레임워크 코어를 사용하여 데이터베이스로 새 프로젝트를 생성하려고 합니다. 이 예제에서는 사용자 정의 블로그 API를 생성합니다. Entity Framework는 C#을 사용하여 코드 우선 데이터베이스 응용 프로그램을 빠르게 빌드하는 데 매우 유용한 패키지입니다.

다른 연결 유형이 필요한 경우 사용할 수 있는 다양한 패키지가 있습니다. 예를 들어 MSSQL 인스턴스에서 데이터베이스를 호스팅하려는 경우 Microsoft.EntityFrameworkCore.SqlServer를 사용합니다.
프로젝트 내의 로컬 파일에 데이터베이스를 저장하려면 Microsoft.EntityFrameworkCore.Sqlite를 사용합니다.
그리고 메모리에만 존재하는 데이터베이스를 사용할 수 있으며 Microsoft.EntityFrameworkCore.InMemory를 사용하고 싶을 것입니다.

이 자습서에서는 다음을 사용합니다.
  • 비주얼 스튜디오 2022
  • .NET 버전 5
  • Nuget: Microsoft.EntityFrameworkCore.Sqlite
  • Nuget: Microsoft.EntityFrameworkCore.Tools

  • 새 프로젝트 만들기



    Visual Studio에서 새 솔루션을 만들고 새 프로젝트를 추가합니다.
    기본 'ASP.NET Core Web API' 템플릿을 사용하고 있습니다. 이 튜토리얼에서 내 프로젝트 이름은 간단히 'EntityFrameworkCoreDemo'입니다.




    다음으로 엔터티 프레임워크 코어용 nuget 패키지를 추가합니다.

    패키지 추가



    패키지를 추가하려면 새로 추가한 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Manage Nuget Package -> Browse tab -> 'Microsoft.EntityFrameworkCore.Sqlite'를 검색하고 Microsoft.EntityFrameworkCore.Sqlite를 선택합니다. 우리는 '5.0.15' 버전을 사용하고 있습니다. 설치를 클릭하십시오.Microsoft.EntityFrameworkCore.Tools에 대해서도 동일하게 수행

    새 데이터베이스 모델 파일 생성


  • '모델'이라는 새 폴더를 만듭니다
  • .
  • BloggingContext.cs라는 새 파일을 만듭니다(폴더를 선택하고 'CTRL + SHIFT + A' 누름).
  • 이 클래스는 DbContext 에서 상속됩니다.public class BloggingContext : DbContext
  • 데이터베이스는 '게시물'이라는 단일 테이블로 구성됩니다.

  • Post.cs라는 새 파일을 만듭니다.

    public class Post
    {
        [Key]
        public Guid Id { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
    
    }
    


    이제 BloggingContext 파일에 DbSet를 추가하여 DbContext에 이것이 데이터베이스의 일부임을 알려야 합니다.

            public DbSet<Post> Posts { get; set; }
    


  • SQLite는 데이터베이스 파일을 로컬에 저장하므로 파일이 저장된 위치에 코드를 추가해야 합니다.
    생성자를 만들고 코드를 추가합니다.

  •         public BloggingContext()
            {
                var folder = Environment.SpecialFolder.LocalApplicationData;
                var path = Environment.GetFolderPath(folder);
                DbPath = System.IO.Path.Join(path, "blogging.db");
            }
    


    위의 코드에서 데이터베이스 위치를 C:\Users\username\AppData\Local\blogging.db 로 설정하고 있습니다. 로컬 개발 시스템에서는 잘 작동하지만 라이브 프로덕션 환경에서는 그렇지 않습니다.
  • DbPath 위치에 있는 데이터베이스를 사용하려면 기본OnConfiguring 기능을 수정해야 합니다. 이 코드를 bloggingContext.cs에 추가합니다.
  • protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options.UseSqlite($"Data Source={DbPath}");

    이제 DbContext가 끝났습니다!

    파일은 다음과 같습니다.

        public class BloggingContext : DbContext
        {
            public DbSet<Post> Posts { get; set; }
    
            public string DbPath { get; }
    
            public BloggingContext()
            {
                var folder = Environment.SpecialFolder.LocalApplicationData;
                var path = Environment.GetFolderPath(folder);
                DbPath = System.IO.Path.Join(path, "blogging.db");
            }
    
            protected override void OnConfiguring(DbContextOptionsBuilder options)
                => options.UseSqlite($"Data Source={DbPath}");
        }
    


    데이터베이스 생성



    다음 명령을 실행하여 데이터베이스를 생성합니다.
    오픈Tools -> Nuget Package Manager -> Package manager consoleAdd-Migration init .

    EntityFramework는 마이그레이션 파일을 사용하여 데이터베이스 상태를 추적합니다.

    마이그레이션을 데이터베이스에 적용하려면 다음을 사용하십시오.update-database

    시작 구성


    startup.cs 파일을 열고 ConfigureServices 함수 내에 DbContext를 추가합니다. 새로 생성된 BloggingContext를 추가합니다.

       services.AddDbContext<BloggingContext>();
    


    컨트롤러 만들기



    다음으로 게시물에 대한 모든 생성, 읽기, 업데이트 및 삭제 작업을 위한 컨트롤러를 생성합니다.
    컨트롤러 폴더를 마우스 오른쪽 버튼으로 클릭하십시오.
    새 파일 추가API Controller with Actions, using Entity Framework를 선택합니다.

    Post.cs 모델과 BloggingDbContext를 선택하고 이름을 PostController.cs 로 둡니다.


    추가를 클릭하고 스캐폴딩이 완료될 때까지 기다립니다.


    모두 완료! 이제 애플리케이션을 실행하고 swagger를 사용하여 엔드포인트를 테스트할 수 있습니다.

    마이크로소프트 가이드 덕분에:
    https://docs.microsoft.com/en-us/ef/core/get-started/overview/first-app?tabs=visual-studio

    좋은 웹페이지 즐겨찾기