Entity Framework 개요
Entity Framework (흔히 줄여서 EF)은 C#과 같은 객체 지향형 프로그래밍(OOP) 언어에서 데이타베이스를 쉽게 사용하기 위한 ORM (Object-Relational Mapping) 도구로서 OOP의 객체(Object)와 관계형(Relational) DB의 테이블을 매핑(Mapping)하여, ADO.NET에서 처럼 별도의 SQL 쿼리를 작성하지 않고도 쉽게 데이타를 엑세스할 수 있게한다. Microsoft가 직접 구현한 ORM (Object-Relational Mapping) 기술로는 Entity Framework (EF)과 LINQ TO SQL이 있으며, 이외에 NHibernate, Dapper 같은 .NET용 ORM 오픈소스들이 있다.
Entity Framework 버전
Entity Framework v1.0은 2008년 .NET 3.5 SP1에 포함되어 처음 발표되었고, 이후 .NET 4.0 에서 Entity Framework v4.0 이 발표되었다. 2012년 .NET 4.5가 발표되면서 Entity Framework v5.0 이 발표되었고, 2013년 Entity Framework v6.0이 기존 .NET Framework에 포함시키지 않고 오픈소스로 발표되었다. 이후 Entity Framework 7.0 (EF7)은 ASP.NET Core에서와 같이 Windows, Linux, OS 등 크로스 플랫폼에서 사용할 수 있도록 Scope를 변경하였으며, 명칭을 Entity Framework Core 1.0으로 변경하였다.
여기 아티클의 설명은 현재 가장 널리 사용되고 있는 Entity Framework 6.1+ (EF6)버전을 기준으로 한다.
Entity Framework Core에 대한 설명은 웹 섹션의 EF Core 아티클이나 아래 유튜브 강의를 참고한다.
여기 아티클의 설명은 현재 가장 널리 사용되고 있는 Entity Framework 6.1+ (EF6)버전을 기준으로 한다.
Entity Framework Core에 대한 설명은 웹 섹션의 EF Core 아티클이나 아래 유튜브 강의를 참고한다.
C# 동영상 강의 : .NET Core - Entity Framework Core 기초 [레벨] 고급 Entity Framework Core를 사용하여 데이타베이스와 테이블을 생성하고, 데이타를 추가, 쿼리하는 등의 기본적인 Entity Framework Core 사용법을 소개합니다. |
Entity Framework 설치
Entity Framework (EF6)를 설치하기 위해서는 Nuget에서 아래 첫번째와 같이 EntityFramework을 설치하면 된다. EF Core (EF7)를 설치하기 위해서는 아래 두번째 명령과 같이 Microsoft.EntityFrameworkCore 패키지를 설치하면 된다.
(1) EF6
Install-Package EntityFramework
(2) EF Core:
Install-Package Microsoft.EntityFrameworkCore
Install-Package EntityFramework
(2) EF Core:
Install-Package Microsoft.EntityFrameworkCore
Entity Framework 구성파일 설정
Entity Framework을 설치한 후 프로젝트의 구성파일 (Web.config 혹은 App.config)에서 EF에서 어떤 DB를 사용할 지를 지정해 준다. Entity Framework은 디폴트로 LocalDB 를 사용하는데, 필요에 따라 다른 DB로 변경할 수 있다. 다른 DB로 변경하는 경우 보통 defaultConnectionFactory 섹션을 변경해 주면 된다. 아래는 LocalDB 대신 MS SQL Server를 사용하도록 설정을 변경하는 예이다.
예제
// 디폴트 설정
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
// SQL Server를 사용하는 경우
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.;Integrated Security=True;MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
// SQL Server를 사용하는 경우
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.;Integrated Security=True;MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
Entity Framework 모델
Entity Framework은 크게 3가지의 접근 모델이 있는데, (1) Code First (2) Model First (3) Database First 모델이 그것이다. 이 중 Model First와 Database First 접근 모델은 Visual Studio의 Visual Model Designer (EDMX)를 통해 객체/테이블 매핑을 디자인하는 방식으로, Database First 접근 모델은 기존 DB로부터 테이블 구조들을 읽어 Visual Model을 구성하는 것이고, Model First는 기존 DB가 없을 때 직접 Visual Model Designer에 Entity 들을 하나씩 추가해 가면서 데이타 모델을 구성하는 방식이다. 이들 Model First / Database First 방식은 Visual Model Designer에 디자인한 것을 *.edmx 라는 파일에 저장하게 된다. Code First 접근 방식은 Visual Model Designer / EDMX 를 사용하지 않고 데이타 모델을 C# 클래스로 직접 코딩하는 방식으로 향후 Entity Framework은 Code First 모델만을 지원할 것이므로 (주: EF6는 3개 모두 지원하고 있음) 많은 개발자들이 Code First 방식을 주로 사용하고 있다.