모델 만들기Creating a Model

EF 모델은 애플리케이션 클래스 및 속성이 데이터베이스 테이블과 열에 매핑하는 방식에 대한 세부 정보를 저장합니다.An EF model stores the details about how application classes and properties map to database tables and columns. EF 모델을 만드는 방법에는 크게 두 가지가 있습니다.There are two main ways to create an EF model:

  • Code First 사용: 개발자는 모델을 지정하는 코드를 작성합니다.Using Code First: The developer writes code to specify the model. EF는 런타임에 개발자가 제공한 엔터티 클래스 및 추가 모델 구성을 기반으로 모델과 매핑을 생성합니다.EF generates the models and mappings at runtime based on entity classes and additional model configuration provided by the developer.

  • EF 디자이너 사용: 개발자는 EF 디자이너를 사용하여 모델을 지정하는 상자와 선을 그립니다.Using the EF Designer: The developer draws boxes and lines to specify the model using the EF Designer. 그 결과로 생성되는 모델은 EDMX 확장을 사용하여 파일에 XML로 저장됩니다.The resulting model is stored as XML in a file with the EDMX extension. 애플리케이션의 도메인 개체는 일반적으로 개념적 모델에서 자동으로 생성됩니다.The application's domain objects are typically generated automatically from the conceptual model.

EF 워크플로EF workflows

두 방법 모두 기존 데이터베이스를 대상으로 지정하거나 새 데이터베이스를 만드는 데 사용할 수 있으며, 그 결과로 4가지 워크플로를 얻게 됩니다.Both of these approaches can be used to target an existing database or create a new database, resulting in 4 different workflows. 어떤 것이 가장 적합한지 알아보세요.Find out about which one is best for you:

코드만 작성하려 합니다...I just want to write code... 디자이너를 사용하고 싶습니다...I want to use a designer...
새 데이터베이스를 만들려는 경우I am creating a new database Code First를 사용하여 코드에서 모델을 정의한 다음, 데이터베이스를 생성합니다.Use Code First to define your model in code and then generate a database. Model First를 사용하여 상자와 선을 이용해 모델을 정의한 다음, 데이터베이스를 생성합니다.Use Model First to define your model using boxes and lines and then generate a database.
기존 데이터베이스에 액세스해야 하는 경우I need to access an existing database Code First를 사용하여 기존 데이터베이스에 매핑하는 코드 기반 모델을 만듭니다.Use Code First to create a code based model that maps to an existing database. Database First를 사용하여 기존 데이터베이스에 매핑하는 상자 및 선 모델을 만듭니다.Use Database First to create a boxes and lines model that maps to an existing database.

비디오 보기: 어떤 EF 워크플로를 사용해야 하나요?Watch the video: What EF workflow should I use?

이 짧은 비디오에서는 워크플로 간 차이점과 적합한 워크플로를 찾는 방법을 설명합니다.This short video explains the differences, and how to find the one that is right for you.

작성자: Rowan MillerPresented By: Rowan Miller

Which Workflow Thumb WMV | MP4 | WMV(ZIP)Which Workflow Thumb WMV | MP4 | WMV (ZIP)

비디오를 시청한 후에도 EF 디자이너와 Code First 중 무엇을 사용할지 결정하지 못했다면 둘 다 공부해 보세요.If after watching the video you still don't feel comfortable deciding if you want to use the EF Designer or Code First, learn both!

내부 살펴보기A look under the hood

Code First와 EF 디자이너 중에서 무엇을 사용하든, EF 모델에는 항상 다음과 같은 여러 구성 요소가 있습니다.Regardless of whether you use Code First or the EF Designer, an EF model always has several components:

  • 바로 애플리케이션의 도메인 개체 또는 엔터티 형식 자체.The application's domain objects or entity types themselves. 개체 레이어라고도 합니다.This is often referred to as the object layer

  • 도메인 관련 엔터티 형식 및 관계로 구성되며 엔터티 데이터 모델을 사용하여 설명되는 개념적 모델.A conceptual model consisting of domain-specific entity types and relationships, described using the Entity Data Model. 이 레이어는 _conceptual_을 의미하는 "C"로 부르기도 합니다.This layer is often referred to with the letter "C", for conceptual.

  • 데이터베이스에 정의된 테이블, 열 및 관계를 나타내는 스토리지 모델.A storage model representing tables, columns and relationships as defined in the database. 이 레이어는 _storage_를 의미하는 "S"로 부르기도 합니다.This layer is often referred to with the later "S", for storage.

  • 개념적 모델과 데이터베이스 스키마 간의 매핑.A mapping between the conceptual model and the database schema. 이 매핑을 "C-S" 매핑이라고도 합니다.This mapping is often referred to as "C-S" mapping.

EF의 매핑 엔진은 "C-S" 매핑을 활용하여 만들기, 읽기, 업데이트, 삭제 등 엔터티에 대한 작업을 데이터베이스 테이블에 대한 동등한 작업으로 변환합니다.EF's mapping engine leverages the "C-S" mapping to transform operations against entities - such as create, read, update, and delete - into equivalent operations against tables in the database.

개념적 모델과 애플리케이션 개체 간의 매핑을 "O-C" 매핑이라고 부르기도 합니다.The mapping between the conceptual model and the application's objects is often referred to as "O-C" mapping. "C-S" 매핑과 비교하면, "O-C" 매핑은 암시적인 일대일 매핑입니다. 개념적 모델에 정의된 엔터티, 속성 및 관계가 .NET 개체의 셰이프 및 형식과 일치해야 합니다.Compared to the "C-S" mapping, "O-C" mapping is implicit and one-to-one: entities, properties and relationships defined in the conceptual model are required to match the shapes and types of the .NET objects. EF4 이상부터 계층 레이어는 EF에 대한 종속성 없이 속성이 있는 간단한 개체로 구성될 수 있습니다.From EF4 and beyond, the objects layer can be composed of simple objects with properties without any dependencies on EF. 이를 보통 POCO(Plain Old CLR Object)라고 부르며 형식 및 속성 매핑은 이름 일치 규칙에 따라 수행됩니다.These are usually referred to as Plain-Old CLR Objects (POCO) and mapping of types and properties is performed base on name matching conventions. 기존의 EF 3.5에서는 엔터티가 EntityObject 클래스에서 파생되어야 하고 "O-C" 매핑을 구현하기 위한 EF 특성을 갖고 있어야 하는 등 개체 레이어와 관련된 제한이 있었습니다.Previously, in EF 3.5 there were specific restrictions for the object layer, like entities having to derive from the EntityObject class and having to carry EF attributes to implement the "O-C" mapping.