본문 바로가기

프로그래밍/C#

엔티티프레임워크에 대하여 (Entity Fraework)

엔티티프레임워크란?

 

많은 응용프로그램들은 데이터를 저장할 데이터베이스가 필요로 한다.

.Net Framework는 기능적으로 쉽게 쿼리에 접근할 수 있는 도구를 제공해주는데 이것이 바로 엔티티프레임워크이다!

 

엔티티 프레임워크는 MS에서 만든 ORM 기술인데 여기서 ORM 은Objext Relational Mapping의 약자로 풀어서 말하면 객체 관계 매핑이라고 할 수 있다. 

데이터 테이블 구조를 클래스화 시키고 각 객체에 데이터를 매핑 시키는 기술이라고 생각하시면 될것 같습니다.

 

엔티티프레임워크를 이용하면 쉽게 엔티티 데이터 모델을 (EDM)을 만들 수 있고 LINQ를 이용하여 데이터에 접근할 수 있다!

 

엔티티 프레임워크가 나오게된 배경..?

 

데이버베이스와 객체 지향 언어는 서로 다르고 데이터베이스는 언제나 바뀔수있는 흐르는 물과 같다. 이런 데이터베이스의 정규화 과정을 통해서 테이블과 테이블간의 관계를 표현하게 되는데 DB와 코드를 연결하기 위해서 비슷하게 생기는 많은 코드르르 작성해야 하는경우가 있다. 또한 DB가 변경되게 되면 코드가 변경되어야 하는 상황이 자주 발생한다. 이러한 문제를 해결하기 위해서 MS에서 만든 것이 바로 ORM기술이라고 한다.

 

엔티티 프레임워크의 강점..!

 

- 일단 엔티티프레임워크로 응용프로그램을 만들고 나면 DBMS가 바뀌더라도 쉽게 마이그레이션이 가능하다.

(일단 반복화된 개념적모델 클래스는 작성할 필요가 없기 때문에 마이그레이션이 쉽다고 생각한다.)

 

- 개발자 입장에서는 놀라운 생산성을 기대할 수 있다.

(Tool을 이용하여 Entity Data Model Wizard를 이용하면 Database와 자동으로 매핑되어 있는 EDM을 만들어주기 때문이다.)

 

뭐든지 장점만 존재할 수는 없다.

 

엔티티 프레임워크의 단점..!

 

- DB성능을 기대하기 어렵다는 단점이 있습니다.

(아무래도 DMA가 짠 쿼리보다는 성능이 떨어질 수 밖에 없다고 생각합니다.)

 

 

엔티티 프레임워크의 주요 기능

 

 - 다양한 DBMS를 지원한다.

(이전의 Linq To SQL은 MSSQL만을 지원했지만 Entity Fraework는 다양한 DMMS를 지원한다.(오라클, MySQL등등을 지원한다))

 

- Visual Studio를 통한 도구를 제공한다.

 

- DB를 구현하고 Code를 작성하는 순서가 아닌 Model을 먼저 정의하고 나중에 DB를 구성할 수 있는 Code First를 지원한다.

 

- 엔티티 질의 Linq함수를 제공한다.

(개발자는 생성된 개념적 모델클래스들을 Linq로 엔티티 질의를 할수 있는 기능을 제공한다.)