# Entity Framework

## Entity framework(EF)란?
- .NET 언어 전용 ORM 프레임워크
- 데이터 모델 객체와 데이터베이스의 테이블 간의 관계 매핑과 객체 쿼리 기술(LINQ)를 지원
- 보다 적은 코드로 쉽고 빠르게 데이터 지향 응용 프로그램을 만들고 유지, 관리가 가능하다.

## EF의 테이블 생성 방식
- Database First : 데이터베이스의 테이블을 이용하여 데이터 모델 객체를 자동으로 생성
- Code First :데이터 모델 객체를 정의하고 모델을 이용하여 데이터베이스에 테이블을 자동으로 생성
- 위의 두 방식을 통해 개념적 모델(CSDL : 데이터 모델), 저장소 모델(SSDL : DB 테이블 구조 모델)을 분리 생성하고 양쪽 모델의 매핑 정보를 xml 파일로 관리한다.

## LINQ 기술
- EF는 모델과 매핑 파일의 정보를 사용하여 개념적 모델로 표현 된 엔터티 형식에 대한 개체 쿼리를 데이터 소스에 대한 쿼리(SQL)로 변환한다.
- 쿼리 결과는 EF가 관리하는 개체로 구체화된다.

-----------------
# EF의 Database First 방식을 통해 ORM 생성하기
1. 데이터베이스에 테이블 정의와 생성하기.
2. Models 폴더에 ADO.NETㅇ 엔터티 데이터 모델 항목을 추가하기.
3. 모델 이름은 데이터베이스명 + Model (ExamHomePageModel)
4. 엔터티 데이터 모델 마법사 팝업 -> EF Designer
5. 데이터 연결 -> 새 연결 
	* 서버 이름 : DESKTOP-XXXXXXX
	* 사용자 이름, 암호 : 데이터베이스 SQL 서버 인증 계정 이름, 암호, 암호 저장 체크.
	* 데이터베이스 이름 선택 또는 입력 : 관련 데이터베이스 선택
	* 연결 테스트 버튼으로 연결 여부 확인, 연결 성공 시 확인.
6. 데이터 연결 후 중요 데이터를 연결 문자열에 포함, 다른 이름으로 Web.Config의 연결 설정 저장 체크.
7. Web.Config에 데이터베이스 연결 정보가 저장된다.
8. 데이터베이스 개체 및 설정 선택에서 데이터베이스에 생성해둔 테이블, 뷰 등을 선택한다.
9. ORM 관련 정보가 자동 생성된다. Models 폴더에는 .edmx 파일이 생성되며 파일 내부에 각종 클래스들이 자동 추가된다. .edmx 클래스 다이어그램으로 모델 구조를 확인할 수 있다.
10. 다이어그램에서 우클릭 후 모델 브라우저를 선택하면 전체 모델 구조를 가시적으로 표현하고 관리할 수 있는 기능을 제공한다.
	* 개념적 모델 영역(..Model) : 개념 모델 객체 정보 제공
	* 저장소 모델 영역(..Model.Store) : 데이터베이스 테이블 정보 제공

## 데이터베이스의 테이블 구조가 변경될 경우 EDMX 파일에 반영하는 방법
	- .edmx 파일의 클래스 다이어그램에서 구조가 변경된 관련 테이블 모델 객체를 선택하고 우클릭 -> 모델에서 삭제를 클릭하여 모델을 먼저 삭제한다.
	- 우클릭 후 데이터베이스에서 모델 업데이트 항목을 클릭하여 데이터베이스 개체 및 설정 선택 팝업창에서 삭제한 테이블을 재선택한다.

## 데이터베이스에 신규 추가된 테이블을 EDMX 파일에 추가하는 방법
	- .edmx 파일의 클래스 다이어그램에서 우클릭 후 데이터베이스에서 모델 업데이트 항목을 클릭하여 추가된 테이블을 선택한다.
