EntityFramework Core 3의 SQLite 데이터베이스 사용

최근에 나는 줄곧 화해하고 있다.Net 핵심 웹 응용 프로그램으로 실체 프레임워크와 SQL Server 데이터베이스를 사용합니다.EF Core 3를 SQLite와 같은 마이그레이션 가능한 데이터베이스와 함께 사용하는 방법을 알고 싶습니다.이것이 바로 내가 어떻게 나의 최신 애완동물 프로젝트를 얻을 수 있는지, 간단한 생각이다.EF Core 3을 사용하여 SQLite 데이터베이스에서 데이터를 저장하고 검색하는 Net Core 웹 API입니다.
이 블로그를 통해 저는 Visual Studio 2019를 사용하여 이 프로젝트를 만드는 것이 얼마나 쉬운지 보여 드리고자 합니다.
내 GitHub에서 내 소스 코드here를 찾을 수 있습니다.
이 프로젝트에 필요한 사항:

  • Visual Studio 2019
  • 커뮤니티 버전을 사용할 수 있습니다here.

  • 우체부
  • 다운로드 가능here.

  • icrosoft 문서
  • 보다 더 좋은 참고는 없다!
  • 공식 문서 새 항목 만들기


    Visual Studio에서 새 항목 작성을 선택하고 템플릿 섹션에서 ASP를 선택합니다.NET 핵심 웹 응용 프로그램, 다음 을 클릭합니다.

    다음 화면에서 항목의 이름을 지정하고 만들기 를 클릭합니다.
    마지막 화면에서 API 템플릿을 선택하고 ASP를 확인합니다.드롭다운 메뉴에서 NET Core 3.1을 선택합니다.
    "만들기"를 누르면 해결 방안 자원 관리자에서 프로젝트를 볼 수 있습니다.
    예제 Weather Forecast 컨트롤러와 클래스를 제거합니다. 왜냐하면 우리는 자신의 것을 만들 것입니다.
    프로젝트에 Context, Controllers, Entities라는 세 개의 새 폴더를 추가합니다.
    일단 완성되면, 당신의 프로젝트 구조는 반드시 이렇습니다.

    EF 코어 및 관련 패키지 추가


    이제 패키지 관리자 콘솔을 사용하여 SQLite에 EF Core NuGet 패키지를 추가하려면 다음 명령을 사용합니다.dependency EntityFramework 핵심 패키지도 추가됩니다.
    도구 > NuGet 패키지 관리자 > 패키지 관리자 콘솔Install-Package Microsoft.EntityFrameworkCore.Sqlite설치가 완료되면 Microsoft가 표시됩니다.EntityFrameworkCore.Sqlite 및 Microsoft프로젝트의 EntityFrameworkCore는 Dependencies->Packages에 있습니다.
    이제 실체와 DbContext를 만들 준비가 되었습니다.

    모델 생성하기


    EF Core는 데이터베이스에서 엔티티 인스턴스를 읽고 쓸 수 있습니다. 관계 데이터베이스를 사용하는 경우 EF Core는 해당 엔티티를 마이그레이션하여 테이블을 만들 수 있습니다.
    관례에 따라 각 실체 유형은 데이터베이스 테이블에 비치도록 설정됩니다. 이 데이터베이스 테이블의 이름은 실체를 공개하는 DbSet 속성과 같습니다.
    우리의 예시에서 우리는'운동선수'라는 실체를 만들어 운동선수의 정보를 저장하는 데 사용한다.
    운동선수라는 새로운 종류의 파일을 추가합니다.cs는 우리 프로젝트의 Entities 폴더에 있습니다.이 클래스에는 세 개의 속성 이름, 나이, 운동 및 Id라는 식별자가 있습니다.
    using System.ComponentModel.DataAnnotations;
    
    namespace SQLiteDemoWebApi.Entities
    {
        public class Athlete
        {
            [Key]
            public int id { get; set; }
    
            [Required]
            [MaxLength(100)]
            public string Name { get; set; }
    
            public int Age { get; set; }
    
            [Required]
            [MaxLength(100)]
            public string Sport { get; set; }
        }
    }
    
    이제 DbContext를 만듭니다. EFCore는 이를 사용하여 응용 프로그램의 실체 유형에 대한 상세한 정보를 수집합니다. 이 실체 유형들은 상하문의 DbSet 속성에 공개되고 데이터베이스 모드에 어떻게 비추는지 알 수 있습니다.
    AthleteSQLiteDbContext라는 새 클래스 파일을 추가합니다.cs는 우리 종목의 Context 폴더에서 이 폴더는 운동선수 실체를 운동선수 데이터베이스 집합으로 공개합니다.
    using Microsoft.EntityFrameworkCore;
    using SQLiteDemoWebApi.Entities;
    
    namespace SQLiteDemoWebApi.Contexts
    {
        public class AthleteSQLiteDbContext : DbContext
        {
            public DbSet<Athlete> Athletes { get; set; }
    
            public AthleteSQLiteDbContext(DbContextOptions<AthleteSQLiteDbContext> options) : base(options)
            { }
            protected override void OnModelCreating(ModelBuilder modelBuider)
            {
                base.OnModelCreating(modelBuider);
            }
        }
    }
    

    데이터베이스 마이그레이션 및 업데이트 추가


    Add Migration 명령은 모델의 초기 표집, 즉 우리가 DbContext에서 언급한 세부 사항과 해당하는 실체를 만들기 위한 이동을 구축했다.
    Update Database 명령은 데이터베이스를 만들고 새 마이그레이션을 적용합니다.
    이 명령을 실행하기 위해서는 설치 가 필요합니다.이것은 패키지 관리자 컨트롤러에서 다음 명령을 실행할 수 있습니다.Install-Package Microsoft.EntityFrameworkCore.Tools패키지를 설치하면 Microsoft가 표시됩니다.EntityFrameworkCore.의존 항목에 추가된 도구입니다.
    마이그레이션을 시작하기 전에 SQLite 데이터베이스에 연결 문자열을 추가해야 합니다.이 연결 문자열을 appsettings에 추가할 것입니다.json 파일.이 프로젝트를 위해 루트 디렉터리에 SQLite 데이터베이스를 만들 것입니다.
    {
      "Logging": {...},
      "ConnectionStrings": {
        "SQLite": "Data Source=Athlete.db"
      },
      "AllowedHosts": "*"
    }
    
    시작할 때 AthleteSQLiteDbContext를 컨테이너에 추가해야 합니다.이것은 시작할 때 Configure Services () 메서드에 추가하는 서비스 컬렉션을 통해 가능합니다.반테러 정예병.
    UseSqlite 방법은 appsettings에서 가져온 연결 문자열을 필요로 합니다.설정 클래스의 json을 사용합니다.
    Configure Services 방법은 다음과 같습니다.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddDbContext<AthleteSQLiteDbContext>(o =>
                    o.UseSqlite(Configuration.GetConnectionString("SQLite")));
    }
    
    현재, 우리는addmigration 명령을 사용하여 데이터베이스에 초기 이전을 추가할 수 있습니다.Add-Migration InitialMigration프로젝트에 마이그레이션 폴더가 생성됩니다.
    프로젝트의 Migrations 디렉토리에 세 파일을 추가합니다.

  • 마이그레이션을 초기화합니다.cs - 주 마이그레이션 파일입니다.마이그레이션 적용 (상향) 과 마이그레이션 복구 (아래로) 에 필요한 작업이 포함되어 있습니다.

  • 마이그레이션을 초기화합니다.디자이너cs - 메타데이터 파일을 마이그레이션합니다.EF에서 사용하는 정보가 포함되어 있습니다.

  • AthleteSQLiteDbContextModelSnapshot.cs - 현재 모델의 스냅샷입니다.다음 마이그레이션을 추가할 때 변경된 내용을 확인하는 데 사용됩니다.
  • 파일 이름의 시간 스탬프는 변경 사항을 볼 수 있도록 시간 순서대로 배열하는 데 도움이 됩니다.
    Database Update 명령은 데이터베이스에 마이그레이션을 적용하는 데 사용됩니다.이런 방법은 로컬 개발과 이전 테스트에 효과적이지만 생산 데이터베이스 관리에 이상적이지 않다.우리의 예시에 대해 우리는 이 명령을 사용할 것이다.Update-Database너는 반드시 새로 창조한 선수를 보아야 한다.데이터베이스 업데이트 명령을 성공적으로 실행한 후 프로젝트 디렉터리의db 파일입니다.

    EF 코어 PMC 도구 API용 디렉터 만들기


    현재 데이터베이스와 연결 설정이 있습니다. 나머지는 컨트롤러를 만드는 것입니다. 이 컨트롤러는 EFCore를 사용하여 SQLite 데이터베이스에서 데이터를 가져오고 업데이트합니다.
    본고의 일부로서 나는 API 컨트롤러를 만드는 세부 사항을 깊이 있게 토론하고 싶지 않다.
    따라서 저희는 Visual Studio 비계 마술을 사용하여 컨트롤러를 만들 것입니다. 이 컨트롤러는 Athlete SQLite DbContext를 사용하여 운동선수의 데이터를 획득, 배치, 발표, 삭제합니다.
    이를 위해 프로젝트의 컨트롤러 디렉터리 -> 추가 -> 컨트롤러를 마우스 오른쪽 단추로 클릭합니다.
    EntityFramework를 사용하여 작업이 있는 API 컨트롤러를 선택하고 [확인]을 클릭합니다.
    드롭다운 목록에서 모델을 선택합니다. AthleteSQLiteDbContext: AthleteSQLiteDbContext를 선택한 다음 추가 를 클릭합니다.


    지금 Athletes Controller를 보셔야 합니다.컨트롤러 디렉터리의 cs 파일입니다.컨트롤러의 경로가 "api/Athleters"로 설정되어 있는지 확인하는 것 외에 이 컨트롤러 클래스에서 변경할 필요가 없습니다.

    테스트 API


    API 테스트를 위해 Postman을 사용합니다. 그러면 API 단점에 요청을 보낼 수 있습니다.
    디버깅 섹션에서 언급된 응용 프로그램 URL을 사용하여 항목 -> 속성 -> 디버깅을 마우스 오른쪽 버튼으로 클릭하여 찾을 수 있습니다.
    프로젝트가 실행되면, Postman에서, 우리는 데이터베이스에 운동선수 기록을 만들 수 있도록 아래의 단점에 대한 새로운 POST 요청을 만들 것입니다.
    (포트 번호가 다를 수 있습니다.
    https://localhost:43325/api/Athletes
    일단 201건의 응답을 얻으면, 우리는 운동선수 데이터가 데이터베이스에 삽입되는 것을 확보할 수 있다.
    또한 동일한 노드 URL에 대한 새 GET 요청을 작성하여 확인할 수 있습니다.
    다음과 같은 답변을 받을 수 있습니다.
    [
        {
            "id": 2,
            "name": "John Doe",
            "age": 35,
            "sport": "Swimming"
        }
    ]
    
    이제 SQLite 데이터베이스에 연결하기 위해 웹 API에 EF Core를 성공적으로 구성했습니다.나는 이것이 너에게 도움이 되고 새로운 것을 배울 수 있기를 바란다.
    앞에서 말한 바와 같이 my에서 완성된 프로젝트here를 찾을 수 있습니다.

    좋은 웹페이지 즐겨찾기