Entity Framework의 모델 엔터티에 대한 다양한 접근 방식 탐색

Entity Framework는 기본 데이터베이스 공급자와 직접 상호 작용할 필요없이 CRUD (만들기, 읽기, 업데이트 및 삭제) 작업을 수행하는 코드를 작성할 수 있도록하여 애플리케이션에서 데이터 액세스를 단순화합니다. Entity Framework에서 엔터티를 모델링하는 세 가지 접근 방식은 Code First, Model First 및 Database First입니다. 이 기사에서는이 세 가지 접근 방식과 그 장단점에 대해 설명합니다.

Entity Framework 란 무엇입니까? 왜 모든 과대 광고?

Microsoft의 Entity Framework는 데이터 모델에서 응용 프로그램의 개체 모델을 격리하는 데 도움이되는 확장 ORM입니다. ADO.Net 용 오픈 소스 ORM 프레임 워크이며 .Net Framework의 일부로 포함됩니다. ORM 도구를 사용하면 애플리케이션의 비즈니스 로직에 집중하고 훨씬 적은 코드로 데이터베이스에 데이터를 저장할 수 있습니다. ORM을 활용하여 호환되지 않는 유형 시스템간에 데이터를 변환 할 수 있습니다. 데이터가 실제로 저장되는 방식에 대한 내부 복잡성에 대해 걱정할 필요없이 도메인 개체를 기본 데이터베이스에 저장할 수 있습니다. Entity Framework는 Microsoft의 성숙한 ORM이며 다양한 데이터베이스에서 사용할 수 있습니다.

다음 섹션에서는 Entity Framework를 사용하여 엔터티를 모델링하는 세 가지 접근 방식을 각각 살펴 봅니다.

코드 우선

Code First 접근 방식은 도메인 요구 사항에 중점을 두어 애플리케이션에서 엔터티를 만드는 데 도움이됩니다. 본질적으로이 접근 방식을 사용하여 DDD (Domain Driven Design)를 따를 수 있습니다. 엔티티가 정의되고 구성이 지정되면 두 가지를 모두 사용하여 즉시 데이터베이스를 만들 수 있습니다. Code First 접근 방식을 사용하면 코드를 더 잘 제어 할 수 있으므로 더 이상 자동 생성 된 코드로 작업 할 필요가 없습니다. 이 접근 방식은 많은 유연성과 제어 기능을 제공하므로 마음에 듭니다. 도메인 클래스가 준비된 경우 도메인 클래스에서 데이터베이스를 쉽게 만들 수 있으므로 항상이 방법을 선호합니다.

이 접근 방식의 단점은 기본 데이터베이스 스키마에 대한 변경 사항이 손실된다는 것입니다. 이 접근 방식에서 코드는 데이터베이스를 정의하고 만듭니다. Code First 접근 방식을 사용하면 Entity Framework를 사용하고 디자이너 또는 XML 파일이 아닌 엔터티 모델을 정의 할 수 있습니다. POCO (Plain Old CLR Objects) 접근 방식을 사용하여 모델을 정의하고 데이터베이스를 생성 할 수 있습니다.

이 접근 방식에서는 일반적으로 엔터티 클래스를 만듭니다. 여기에 예가 있습니다. 일반적인 엔티티 클래스는 다음과 같습니다.

 public class Product

   {

      public int ProductId { get; set; }

      public string ProductName { get; set; }

      public float Price { get; set; }

   }

다음으로 아래와 같이 DbContext 클래스를 확장하여 사용자 지정 데이터 컨텍스트를 정의해야합니다.

public class Context : DbContext

   {

      public DbSet Products { get; set; }

   }

마지막으로 구성 파일에 연결 문자열을 지정해야합니다. 완료되었습니다!

데이터베이스 우선

데이터베이스가 이미 설계되고 준비된 경우 Database First 접근 방식을 사용할 수 있습니다. 이 접근 방식에서는 기본 데이터베이스에서 EDM (엔터티 데이터 모델)이 생성됩니다. 예를 들어 데이터베이스에서 Visual Studio IDE에서 edmx 파일을 생성 할 때 데이터베이스 우선 접근 방식을 사용합니다. 데이터베이스에 대한 수동 변경은 쉽게 가능하며 필요한 경우 (예 : 기본 데이터베이스의 스키마가 변경되는 경우) 항상 EDM을 업데이트 할 수 있습니다. 이렇게하려면 Visual Studio IDE의 데이터베이스에서 EDM을 업데이트하기 만하면됩니다.

먼저 모델

Model First 접근 방식에서는 먼저 EDM을 만든 다음 여기에서 데이터베이스를 생성 할 수 있습니다. 일반적으로 Visual Studio의 엔터티 데이터 모델 마법사를 사용하여 빈 EDM을 만들고 Visual Studio에서 엔터티와 해당 관계를 정의한 다음이 정의 된 모델에서 데이터베이스를 생성합니다. Visual Studio의 디자이너에서 엔터티를 쉽게 만들고 해당 관계 및 연결을 정의 할 수 있습니다. 디자이너를 사용하여 엔터티의 속성에 대한 키 속성 및 데이터 형식을 지정할 수도 있습니다. 부분 클래스를 사용하여 엔터티에서 추가 기능을 구현할 수 있습니다.

좋습니다.하지만 언제 모델 우선 접근 방식을 사용해야합니까? 도메인 클래스도 데이터베이스도 준비되지 않았고 시각적 디자이너를 사용하여 데이터 모델을 정의하려는 경우이 접근 방식이 적합합니다. 그러나 Code First 접근 방식과 마찬가지로 Model First 접근 방식에서는 모델이 데이터베이스를 정의 할 때 데이터베이스에 대한 수동 변경 사항이 손실됩니다.