Model First

이 비디오 및 단계별 연습에서는 Entity Framework를 사용한 Model First 개발에 대한 소개를 제공합니다. Model First를 사용하면 Entity Framework Designer를 사용하여 새 모델을 만든 다음 모델에서 데이터베이스 스키마를 생성할 수 있습니다. 모델은 EDMX 파일(.edmx 확장명)에 저장되며 Entity Framework 디자이너에서 보고 편집할 수 있습니다. 애플리케이션에서 상호 작용하는 클래스는 EDMX 파일에서 자동으로 생성됩니다.

비디오 보기

이 비디오 및 단계별 연습에서는 Entity Framework를 사용한 Model First 개발에 대한 소개를 제공합니다. Model First를 사용하면 Entity Framework Designer를 사용하여 새 모델을 만든 다음 모델에서 데이터베이스 스키마를 생성할 수 있습니다. 모델은 EDMX 파일(.edmx 확장명)에 저장되며 Entity Framework 디자이너에서 보고 편집할 수 있습니다. 애플리케이션에서 상호 작용하는 클래스는 EDMX 파일에서 자동으로 생성됩니다.

작성자: Rowan Miller

비디오: WMV | MP4 | WMV(ZIP)

필수 구성 요소

이 연습을 완료하려면 Visual Studio 2010 또는 Visual Studio 2012이 설치되어 있어야 합니다.

Visual Studio 2010을 사용하는 경우 NuGet도 설치해야 합니다.

1. 애플리케이션 만들기

작업을 간단하게 유지하기 위해 Model First를 사용하여 데이터 액세스를 수행하는 기본 콘솔 애플리케이션을 빌드합니다.

  • Visual Studio를 엽니다.
  • 파일 -> 새로 만들기 -> 프로젝트
  • 왼쪽 메뉴에서 Windows를 선택하고 콘솔 애플리케이션을 선택합니다.
  • 이름으로 ModelFirstSample을 입력합니다.
  • 확인을 선택합니다.

2. 모델 만들기

Visual Studio의 일부로 포함되는 Entity Framework Designer를 사용하여 모델을 만들겠습니다.

  • 프로젝트 -> 새 항목 추가…

  • 왼쪽 창에서 데이터를 선택한 다음 ADO.NET 엔터티 데이터 모델을 선택합니다.

  • 이름으로 BloggingModel을 입력하고 확인을 클릭하면 엔터티 데이터 모델 마법사가 시작됩니다.

  • 빈 모델을 선택하고 마침을 클릭합니다.

    Create Empty Model

Entity Framework 디자이너가 빈 모델로 열립니다. 이제 모델에 엔터티, 속성 및 연결을 추가할 수 있습니다.

  • 디자이너 화면을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.

  • 속성 창에서 엔터티 컨테이너 이름BloggingContext로 변경합니다. 이는 생성되는 파생 컨텍스트의 이름이며, 컨텍스트는 데이터베이스와의 세션을 나타내고 데이터를 쿼리 및 저장할 수 있습니다.

  • 디자이너 화면을 마우스 오른쪽 단추로 클릭하고 새로 추가 ->엔터티...를 선택합니다.

  • 블로그를 엔터티 이름으로 입력하고 BlogId를 키 이름으로 입력한 후 확인을 클릭합니다.

    Add Blog Entity

  • 디자인 화면에서 새 엔터티를 마우스 오른쪽 단추로 클릭하고 새로 추가 -> 스칼라 속성을 선택한 다음 Name을 속성 이름으로 입력합니다.

  • 이 프로세스를 반복하여 Url 속성을 추가합니다.

  • 디자인 화면에서 Url 속성을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 속성 창에서 null 허용 설정을 True로 변경합니다. 그러면 Url을 할당하지 않고 데이터베이스에 블로그를 저장할 수 있습니다.

  • 방금 학습한 기술을 사용하여 PostId 키 속성을 사용하여 게시물 엔터티를 추가합니다.

  • 게시물 엔터티에 제목콘텐츠 스칼라 속성 추가

이제 엔터티가 몇 개 있으므로 엔터티 간에 연결(또는 관계)을 추가해야 합니다.

  • 디자인 화면을 마우스 오른쪽 단추로 클릭하고 새로 추가 -> 연결...을 선택합니다.

  • 관계의 한쪽 엔드포인트를 하나의 다중성으로 블로그를 가리키고 다른 엔드포인트는 여러 다중성 게시물로 게시합니다. 즉, 블로그에 게시물이 많고 게시물이 하나의 블로그에 속합니다.

  • '게시물' 엔터티에 외래 키 속성 추가 확인란이 선택되어 있는지 확인한 다음 확인 클릭합니다.

    Add Association MF

이제 데이터베이스를 생성하고 데이터를 읽고 쓰는 데 사용할 수 있는 간단한 모델이 있습니다.

Model Initial

Visual Studio 2010의 추가 단계

Visual Studio 2010에서 작업하는 경우 최신 버전의 Entity Framework로 업그레이드하기 위해 따라야 하는 몇 가지 추가 단계가 있습니다. 업그레이드는 개선된 API 화면에 액세스할 수 있기 때문에 중요하며, 이 화면은 최신 버그 수정 기능뿐만 아니라 훨씬 쉽게 사용할 수 있습니다.

먼저 NuGet에서 최신 버전의 Entity Framework를 가져와야 합니다.

  • 프로젝트–> NuGet 패키지 관리...를 선택합니다. NuGet 패키지 관리... 옵션이 없는 경우 최신 버전의 NuGet을 설치해야 합니다.
  • 온라인 탭을 선택합니다.
  • EntityFramework 패키지를 선택합니다.
  • 설치를 클릭합니다.

다음으로, 모델을 교환하여 이후 버전의 Entity Framework에서 도입된 DbContext API를 사용하는 코드를 생성해야 합니다.

  • EF 디자이너에서 모델의 빈 지점을 마우스 오른쪽 단추로 클릭하고 코드 생성 항목 추가...를 선택합니다.

  • 왼쪽 메뉴에서 온라인 템플릿을 선택하고 DbContext를 검색합니다.

  • C#용 EF 5.x DbContext 생성기를 선택하고 이름으로 BloggingModel을 입력한 후 추가를 클릭합니다.

    DbContext Template

3. 3. 데이터베이스 생성

모델을 고려할 때 Entity Framework는 모델을 사용하여 데이터를 저장하고 검색할 수 있는 데이터베이스 스키마를 계산할 수 있습니다.

Visual Studio와 함께 설치되는 데이터베이스 서버는 설치한 Visual Studio 버전에 따라 다릅니다.

  • Visual Studio 2010을 사용하는 경우 SQL Express 데이터베이스를 만듭니다.
  • Visual Studio 2012를 사용하는 경우 LocalDB 데이터베이스를 만듭니다.

그럼 계속해서 데이터베이스를 생성해 보겠습니다.

  • 디자인 화면을 마우스 오른쪽 단추로 클릭하고 모델에서 데이터베이스 생성...을 선택합니다.

  • 새 연결...을 클릭하고 사용 중인 Visual Studio 버전에 따라 LocalDB 또는 SQL Express를 지정한 다음 데이터베이스 이름으로 ModelFirst.Blogging을 입력합니다.

    LocalDB Connection MF

    Sql Express Connection MF

  • 확인을 선택하여 새 데이터베이스를 만들 것인지 묻는 메시지가 표시되면 를 선택합니다.

  • 다음을 선택하면 Entity Framework Designer에서 데이터베이스 스키마를 만드는 스크립트를 계산합니다.

  • 스크립트가 표시된 후 마침을 클릭하면 스크립트가 프로젝트에 추가되고 열립니다.

  • 스크립트를 마우스 오른쪽 단추로 클릭하고 실행을 선택하면 사용 중인 Visual Studio 버전에 따라 연결할 데이터베이스를 지정하고 LocalDB 또는 SQL Server Express를 지정하라는 메시지가 표시됩니다.

4. 데이터 읽기 및 쓰기

이제 모델을 사용하여 일부 데이터에 액세스해야 합니다. 데이터에 액세스하는 데 사용할 클래스는 EDMX 파일을 기반으로 자동으로 생성됩니다.

이 스크린샷은 Visual Studio 2012에서 찍은 것으로, Visual Studio 2010을 사용하는 경우 BloggingModel.tt 및 BloggingModel.Context.tt 파일은 EDMX 파일 아래에 중첩되지 않고 프로젝트 바로 아래에 있습니다.

Generated Classes

아래와 같이 Program.cs에서 Main 메서드를 구현합니다. 이 코드는 컨텍스트의 새 인스턴스를 만든 다음, 이를 사용하여 새 블로그를 삽입합니다. 그런 다음 LINQ 쿼리를 사용하여 제목별로 알파벳순으로 정렬된 데이터베이스에서 모든 블로그를 검색합니다.

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

이제 애플리케이션을 실행하고 테스트할 수 있습니다.

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

5. 5. 모델 변경 처리

이제 모델을 몇 가지 변경해야 하며, 이러한 변경을 수행할 때 데이터베이스 스키마도 업데이트해야 합니다.

먼저 모델에 새 사용자 엔터티를 추가합니다.

  • Username을 키 이름으로, String을 키의 속성 형식으로 사용하여 새 사용자 엔터티 이름을 추가합니다.

    Add User Entity

  • 디자인 화면에서 Username 속성을 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 속성 창에서 MaxLength 설정을 50으로 변경합니다. 그러면 사용자 이름에 저장할 수 있는 데이터가 50자로 제한됩니다.

  • 사용자 엔터티에 DisplayName 스칼라 속성 추가

이제 업데이트된 모델이 있으며 새 사용자 엔터티 형식을 수용하도록 데이터베이스를 업데이트할 준비가 되었습니다.

  • 디자인 화면을 마우스 오른쪽 단추로 클릭하고 모델에서 데이터베이스 생성...을 선택하면 Entity Framework에서 업데이트된 모델을 기반으로 스키마를 다시 만드는 스크립트를 계산합니다.
  • 마침을 클릭합니다.
  • 기존 DDL 스크립트와 모델의 매핑 및 스토리지 부분을 덮어쓰는 것에 대한 경고가 표시될 수 있으며, 이 두 경고 모두에 대해 를 클릭합니다.
  • 데이터베이스를 만드는 업데이트된 SQL 스크립트가 열립니다.
    생성된 스크립트는 모든 기존 테이블을 삭제한 다음 스키마를 처음부터 다시 만듭니다. 이는 로컬 개발에는 작동할 수 있지만 이미 배포된 데이터베이스에 변경 내용을 푸시할 수는 없습니다. 이미 배포된 데이터베이스에 변경 내용을 게시해야 하는 경우 스크립트를 편집하거나 스키마 비교 도구를 사용하여 마이그레이션 스크립트를 계산해야 합니다.
  • 스크립트를 마우스 오른쪽 단추로 클릭하고 실행을 선택하면 사용 중인 Visual Studio 버전에 따라 연결할 데이터베이스를 지정하고 LocalDB 또는 SQL Server Express를 지정하라는 메시지가 표시됩니다.

요약

이 연습에서는 EF 디자이너에서 모델을 만든 다음 해당 모델에서 데이터베이스를 생성할 수 있는 Model First 개발을 살펴보았습니다. 그런 다음 모델을 사용하여 데이터베이스에서 일부 데이터를 읽고 씁니다. 마지막으로 모델을 업데이트한 다음 모델과 일치하도록 데이터베이스 스키마를 다시 만듭니다.