1. 등장 배경
데이버베이스와 객체 지향 언어는 서로 다르고 데이터베이스는 언제나 바뀔 수 있는 흐르는 물과 같다. 이런 데이터베이스의 정규화 과정을 통해서 테이블과 테이블 간의 관계를 표현하게 되는데 DB와 코드를 연결하기 위해서 비슷하게 생기는 많은 코드를 작성해야 하는 경우가 있다. 또한 DB가 변경되게 되면 코드가 변경되어야 하는 상황이 자주 발생한다. 이러한 문제를 해결하기 위해서 MS에서 만든 것이 바로 ORM기술이라고 한다.
2. 개념
자바처럼 여러 프레임워크의 장점들을 닷넷 프레임워크와 iBatis.net이나spring.net, log4.net 등의 닷넷 버전의 오픈 소스 프레임워크가 나타나게 되었습니다. 이런 시대의 흐름을 MS가 인지하여서 일까요? MS는 ORM기반의 Entity Framework를 릴리즈하였습니다.
3. 목적
Entity Framework 은 C#과 같은 객체 지향형 프로그래밍 언어에서 데이터베이스를 쉽게 사용하기 위한 도구로 객체와 관계형 DB의 테이블을 매핑하여 (ADO.NET에서처럼 별도의 SQL 쿼리를 작성하지 않고도) 쉽게 데이터를 액세스 할 수 있게 합니다.
microsoft가 직접 구현한 ORM(Object Relational Mapping) 기술로는 Entity Framework과 LINQ TO SQL 이 있습니다.
Entity Framework은 데이터베이스를 액세스 하는 기술이므로 ASP.NET에서만 사용하는 것은 아니지만 ASP.NET MVC에서 데이터를 액세스하는 기본 프레임워크로 Entity Framework을 사용하기 때문에 MVC를 사용하면 Entity Framework를 자연스럽게 사용하게 됩니다.
4. 개요
Entity Framework는 Data를 Entity로 매핑할 수 있는 것으로 우리가 흔히 쓰는 Database개체들을 Object화 할 수 있습니다. Entity Framework가 릴리즈 될 당시에. NET Framework 3.5에서는 LINQ가 포함되어 관계형 데이터를 보다 용이하게 질의할 수 있게 제공하였는데 Entity Framework가 추가되면서 개발자로 하여금 더 높은 생산성의 향상을 기대하게 하였고 Entity Framework는 직관적인 DAO(Data Access Object) 패턴의 응용프로그램을 구현하게 됩니다.
위 그림에서 보여주는 것과 같이 Entity Client는 중간에서 기존의 Linq To Entities와 Entity SQL을 ADO.NET모델로 확장을 합니다.
5. 기능
Data Store가 다음과 같으면 언제 어디서든 Entity Framework를 사용 할 수 있다. MS SQL, Oracle, MySql, PostgreSQL, SQL Anywhere, DB2, Informix, U2, Ingres, Progress, Firebird, Synergy, Virtuoso등이 있습니다.굉장히 많죠?저희가 주로 쓰는MS SQL, Oracle, MySql가 될것 같은데요. Entity Framework가ADO.NET Data Provider상위에서 빌드되기 때문에 이런 많은 데이터베이스 지원이 가능했습니다.
- 통합된 Visual Studio 도구 제공
Visual Studio Tool에서 시각적인 Entity 모델과 기존 데이터베이스 개체 모델화를 자동으로 생성해준다. 또한 새로운 데이터베이스도 Visual Studio에서 모든 권한을 편집하여 배포 가능하다. Visual Studio의 가장 큰 장점인 드래그 앤 그롭이 가능하다는 것 입니다. - POCO(Plain Old CLR Objects) 지원
기존 버전에서는 데이터 저장소와 논리적 객체(Entity)간의 연관성이 표현되지 않았습니다. 이를 지속성 무시 개체 POCO라고 불리는데요. 이번 버전에서는 영속성을 지원하는 POCO Entity가 제공됩니다.
POCO Entity는 System.Data.Objects.ObjectContext 클래스를 상속 받는데요. 이 클래스에서 제공되는 메서드는 데이터 저장소와 엔티티간의 영속성을 지원 가능하게 해준다. - Model-First 지원
Entity Framework 이전 버전에서 개념적 모델을 만들 수 있었습니다. 다만 개념적 모델은 데이터베이스 마법사를 통해서 생성되기 때문에 모델은 DB기반의 모델에 존속 될 수 밖에 없었습니다. Entity Framework 4.0에서는 기존방식도 지원하고 개념적 모델이 DB에 물리적 개체가 없어도 모델링이 가능하게 지원한다. 이를 Model-First라고 합니다. - 관계 Object의 지연 실행
지연 실행에 대해서는 기존 버전에도 존재하며 LINQ의 대표 기능이기도 합니다. 다만 관계형에 대해서는 표현이 되지 않았는데요. 이번 버전에서 쿼리 결과가 명시적으로 탐색 속성에서 관계형 개체를 확인 할 수 있습니다. - 엔티티 질의 LINQ 함수
Entity Framework 초기 버전에서는 함수의 지원이 제한되어 있었습니다. 여기서 말하는 함수는 저장 프로시져나 데이터베이스 UDF를 말하는데요. 새로운 EntityFunctions과 SqlFunctions 클래스가 이 이슈를 해결하기 위해 추가 되었습니다. 이 클래스들은 개발자에게 LINQ로 엔티티 질의를 할 수 있게 기능을 제공합니다. - Complex Type 지원
Visual Studio 2010 Entity Data Model Designer에서 원하는 복잡한 타입을 쉽게 정의 할 수 있습니다. 모델 탐색기에서 트리로 보여주는데요. 아래 그림처럼 모델 탐색기에서 Complex Type을 생성 할 수 있으며 여기서 정의된 타입은 Entity 속성으로 사용됩니다.
출처
'C# > Entity Framework' 카테고리의 다른 글
02.Entity Framework 데이터 저장 ( SaveChange ) (0) | 2019.11.14 |
---|---|
01.Entity DataModel 만들기 (0) | 2019.11.14 |