Client/----- Entity Framework

EF6로 간단한 CRUD 만들기

happykidsdad 2018. 11. 20. 20:41

개요

 

EF6 이용하여 간단한 CRUD WinForm 만들어 보자.

 

EF 들여다 보기 위해 최대한 간단하게 만들어 본다.

 

메인창의 DataGridView 데이터를 표시하고 데이터 조작은 팝업창을 이용해서 하도록 한다.

 

데이터 유효성 검사, 레이어 등을 무시하고 컨트롤의 Data Binding 기능을 사용하도록 한다.

 

DB mdf 파일을 이용한다.

 

방법

 

1. 솔로션 만들기.

 

 

2. 메인창 만들기.

2.1 아래와 같이 DataGridView 1개와 Button 3개를 구성한다.

 

 

 

3. 메인창의 컨트롤 설정하기.

3.1 DataGridView AllowUserToAddRows, AllowUserToDeleteRows 속성을 False 설정한다.

3.2 버튼들에 이벤트를 추가한다.

 

 

 

4. 상세정보창을 만든다.

4.1 Label TextBox 3개씩 만들고, 저장용 Button 1 만든다.

 

 

 

5. 상세정보창의 컨트롤 설정하기.

5.1 저장 Button DialogResult 속성을 설정하여 모달 형식의 대화상자를 만든다.

5.1 저장 Button 상세정보창의 acceptButton으로 설정하여 Enter 입력 저장Button 클릭되도록 한다.

 

 

 

6. DB 만들기.

EF에서 Code First, DB First 이런 것들이 나오는데 이건 엔터프라이즈 디자인 패턴을 모르면 차이점을 이해하기 어렵다. 사실 어떤 방법으로 하던 결과는 같다. 결과가 DB Object 어떻게 매핑되고 어떻게 매핑정보를 어떤 포맷으로 저장하는지의 차이와 그로 인한 개발 과정의 차이이다. 이번 튜토리얼은 심플하게 DataBase 먼저 만들고 쉽게 EF 설정하도록 한다.

6.1 mdf 파일만들기.

6.1.1 '프로젝트 마우스 오른쪽 클릭 > 추가 > 새항목 > Data > 서비스 기반 데이터베이스' 선택 파일명을 'Database1' 그대로 두고 '추가'버튼 클릭.

6.1.2 솔루션 탐색기에서 새로 생성된 Database1.mdf 파일 확인.

6.2 Table 만들기.

6.2.1 ContactDB.mdf 더블 클릭하여 서버 탐색기 오픈.

6.2.2 '테이블 마우스 오른쪽 버튼 > 테이블 추가' 선택하여 테이블 디자이너 오픈.

6.2.3 아래와 같이 컬럼 생성.

 

 

 

6.2.4 Id 컬럼은 특별히 ID여부를 true 설정한다.

 

 

 

7. 매핑파일(확장자 edmx) 만들기

7.1 '프로젝트 마우스 오른쪽 클릭 > 추가 > 새항목 > Data > 서비스 기반 데이터베이스' 선택 파일명을 'Model1'으로 그대로 두고 '추가'버튼 클릭하면 '엔터티 데이터 모델 마법사' 창이 오픈

7.2 '모델 콘텐츠 선택' 화면에서 '데이터베이스의 EF Designer' 선택 > '데이터 연결 선택' 화면에서 'Database1.mdf' 선택 > '버전 선택' 화면에서 'Entity Framework 6.x' 선택 > '데이터베이스 개체 설정 선택' 화면에서 'Table' 선택, '생성된 개체 이름을 복수화 또는 단수화' 체크, '모델에 외래 포함' 체크 '마침' 클릭.

7.3 ' 텍스트 템플릿을 실행하면 컴퓨터가 손상될 있습니다…. 어쩌구 저쩌구…' 메시지가 뜨는데 과감하게 실행하도록 '확인' 클릭.

7.4 생성된 Model1.edmx 파일의 'Table' 엔티티의 마우스 오른쪽 버튼 > 테이블 매핑을 클릭하여 매핑정보 확인. 파일에서 DataBase 표현한 Object 우리가 개발에 사용할 엔티티 Object 매핑을 확인하고 수정할 있다.

 

 

 

8 매핑파일 내용 확인.

8.1 파일을 마우스 오른쪽 버튼으로 클릭하고 '다른 프로그램으로 열기' > '연결 프로그램 대화상자'에서 'XML 편집기' 선택하면 XML형식의 매핑정보를 있다.

8.1.1 SSDL Stored Schema Definition Language DataBase 구조를 표현한다.

8.1.2 CSDL Conceptual Schema Definition Language 엔티티의 구조를 표현한다.

8.1.3 MSL Mapping Specificiation Language DataBase 엔티티의 매핑을 표현한다.

 

 

 

9. 데이터 소스 만들기

9.1 '데이터 소스'창에서 ' 데이터 소스 추가' 클릭하여 '데이터 소스 구성 마법사' 오픈.

9.2 '데이터 소스 형식 선택' 화면에서 '개체' 선택 > '데이터 개체 선택' 화면에서 'Table'선택.

9.3 추가된 데이터 소스 확인

 

 

10. DataGridView 데이터 소스 선택 ComboBox 선택 기타 데이터 소스 > 프로젝트 데이터 소스 > Table 선택.

 

 

 

11. Form 로드되면 DataGridView 저장된 모든 데이터를 표시하도록 아래 코드 추가.

 

 

 

12. 실행해 보면 실행되나 저장한 데이터가 없으므로 표시되는 데이터는 없다.

 

13. 신규 기능을 추가한다.

13.1 메인폼의 '신규' 버튼을 클릭하면 상세정보창을 오픈하고 창이 닫히면 DataGridView 새로고침하도록 코드를 추가한다.

 

 

 

13.2 상세정보창의 컨트롤들을 데이터 바인딩 속성을 이용하여 'Text'속성에 데이터소스에 연결한다. 이때 컨트롤을 바인딩하면 상세정보창을 위한 바인딩소스가 자동으로 추가된다. 다음 컨트롤들부터는 새로 생성된 바인딩소스로 연결하면 된다.

 

 

 

13.2 신규이기 때문에 상세정보창을 생성할 객체로 바인딩소스를 설정하여 컨트롤들을 객체에 바인딩한다.

13.3 상세정보창의 입력란에 정보 입력 엔터키나 저장버튼을 클릭하면 저장되면서 창이 닫히도록 한다.

13.4 저장 데이터 유효성 검사 실패 취소시킨다.

 

 

 

14. 수정기능을 추가한다.

14.1 편집버튼을 클릭하면 메인창에서 현재 선택된 객체를 상세정보창으로 넘긴다. 이를 위해 생성자의 파라미터로 넘기도록 한다.

14.2 수정된 생성자에 맞게 신규버튼 클릭도 수정한다.

 

 

 

14.3 상세정보창에서는 편집할 객체를 받아 바인딩소스에 연결하면 컨트롤에 자동으로 바인딩 된다.

 

 

 

14.4 정보를 수정 창이 닫히면 데이터를 수정하는 코드는 변동없다.

 

15. 삭제기능 추가하기.

15.1 간단히 메인창에서 현재 선택된 데이터를 삭제해 버린다.

 

 

16. 실행 결과

16.1 EF는 기본적으로 실행해서 입력한 데이터를 자동으로 지워버리기 때문에 다시 실행해 보면 데이터가 없다.

 

 

.