Midnight Peach의 빠른 시작

Midnight Peach 2008. 10. 8. 23:48

[주의]
이 글은 MP의 현재 버전 (3.X)에 맞지 않습니다.

단순 참고용으로만 활용하십시오

간단한 메모장을 만드는 예를 보면서 MP의 사용방법을 살펴 보도록 하겠습니다.

여기서는 데이터 액세스 레이어만 만들겠습니다.

먼저 데이터베이스 스키마를 작성하여야 겠지요.

사용자 / 메모 / 조회 테이블을 만듭니다.

Memo 테이블은 계층적 구조입니다. ParentID 키가 부모 메모에 대한 참조키입니다.

뷰도 하나 만듭시다. 이 뷰의 이름은 ReadingView 입니다.

데이터베이스 스키마를 만들었으니 이제 비주얼 스튜디오가 출동하면 되겠네요.

비주얼 스튜디오에서 새 솔루션과 클래스 라이브러리 프로젝트를 만듭니다. 솔루션의 이름은 MemopadSolution, 프로젝트의 이름은 Memopad.Biz로 지정합니다.

Memopad.Biz 프로젝트에 새 DBML 파일을 추가합니다.

프로젝트에 LINQ to SQL 클래스 항목을 추가하고 이름은 Memopad로 합니다.

서버 탐색기에서 위에서 만든 데이터베이스를 연후, 테이블과 뷰를 화면 가운데로 끌어 옵니다.

데이터베이스 연결 문자열은 설정 파일에 저장이 되는데, 이 때 암호와 같은 중요한 정보도 같이 저장하겠냐고 물어보는 대화상자가 열립니다.

예 혹은 아니오를 선택하고 다음으로 넘어갑니다.

이제 MP를 실행합니다.

MP에서 코드 생성은 3단계의 대화상자를 거치게 됩니다.

첫번째 대화상자에서는 DBML  파일과 패키지 파일을 선택합니다.

DBML 파일은 위에서 만든 Memopad.dbml을 선택하고, 패키지는 내장 패키지인 Default를 선택하고 확인을 누릅니다.

두 번째 대화 상자에서는 코드를 생성할 테이블 혹은 뷰를 선택합니다.

코드 생성 컬럼이 선택되지 않은 테이블 혹은 뷰에 대해서는 코드가 생성되지 않습니다.

기본값은 모든 테이블/뷰에 대해 코드를 생성하는 것입니다.

(위 그리드에서 배경 색상이 연한 노란색이 아닌 셀은 읽기 전용 데이터이며, 코드 생성 컬럼의 헤드 부분을 누르면 전체 선택 / 해제가 토글됩니다.)

확인을 눌러 다음으로 넘어갑니다.

아래와 같은 경고 대화상자가 나타납니다.

Timestamp 형식 컬럼을 이용한 업데이트 동시성 검사가 지정되지 않았기 때문에, 각 컬럼의 UpdateCheck 특성을 "Never"로 설정하여 업데이트 동시성 검사를 하지 않도록 DBML 파일을 수정한다는 의미입니다.

(업데이트 동시성 검사와 LINQ to SQL 및 MP간의 관계에 대해서는 다음 문서에서 자세히 설명하도록 하겠습니다.)

여기서는 "예"를 선택하여 다음으로 넘어갑니다.

마지막 대화상자는 패키지의 옵션을 설정하는 대화상자 입니다.

패키지의 설정은 크게 변수와 템플릿 두 부분으로 나누어 집니다.

각 세부 항목은 패키지에 따라 다를 수 있습니다.

MP의 내장된 기본 패키지인 Default 패키지의 경우에는 두 개의 변수와 다섯 개의 템플릿이 있습니다.

변수인 Namespace와 ConnectionString은 각각 생성될 코드들의 네임 스페이스와 데이터베이스 연결 문자열을 의미합니다.

데이터베이스 연결 문자열의 경우에는 "server=A; database=B; uid=C; pwd=D"와 같이 직접 지정할 수도 있고 위 그림과 같이 설정 파일을 사용하도록 지정할 수도 있습니다.

템플릿의 경우에는 생성될 코드가 저장될 경로를 지정합니다. 나중에 메인 폼에서 "저장" 명령을 통해 생성된 코드를 파일로 저장할 때 폴더를 지정하면 여기에 정의된 상대경로에 따라 각각의 생성된 코드들이 파일로 저장됩니다.

또한 템플릿의 범위가 "table"인 경우에는 자리표시자인 "{0}"를 사용할 수 있습니다. 이 자리표시자는 테이블의 이름으로 치환이 됩니다. 예를 들어 Memo와 Member라는 두 개의 테이블이 있다면, Generated\Entities\{0}.cs 는 각각 Generated\Entities\Memo.cs와 Generated\Entities\Member.cs로 치환이 됩니다.

여기서는 위 그림과 같이 설정을 하고 "확인"을 누릅니다.

이제 코드가 생성되고 MP의 메인 폼이 열립니다.

왼쪽에 있는 트리뷰에서 각 항목을 선택하면 오른쪽의 텍스트 상자에 해당 내용이 표시됩니다.

트리뷰의 구조는 다음과 같습니다.

데이터베이스 범위 템플릿과 테이블(뷰) 범위 템플릿이 순서대로 표시되어 있는데, 이 중에서 템플릿 이름을 누르면 텍스트 박스에 템플릿 자체가 표시됩니다. 반면에 데이터베이스 이름이나 테이브/뷰의 이름을 클릭하면 텍스트 박스에 해당 템플릿에 의해 생성된 코드가 나타납니다.

"저장" 툴바 버튼을 클릭하면 폴더를 선택한 후 생성된 코드를 파일로 저장합니다.

"확인"을 누르면 모든 생성된 코드를 선택된 폴더의 하위에 저장합니다.

이때 저장 경로는 패키지 옵션 중 템플릿의 저장위치에 설정된 값에 의해 결정됩니다.

여기서는 바탕 화면을 선택합니다.

이제 다시 비주얼 스튜디오로 돌아갑니다.

윈도우 탐색기에서 바탕 화면에 있는 Generated 폴더를 선택한 후 비주얼 스튜디오의 솔루션 탐색기의 Memopad.Biz 프로젝트로 끌어옵니다.

패키지 옵션에서 연결 문자열로 "ConfigurationManager.ConnectionStrings[0].ConnectionString"를 지정하였기 때문에 Memopad.Biz 프로젝트에 "System.Configuration" 어셈블리에 대한 참조를 추가합니다.

마지막으로 프로젝트 생성시 추가된 Class1.cs 파일을 삭제하면 Memopad의 기본 데이터 액세스 레이어가 완성되었습니다.

(정확하게는, 우리가 만든 레이어는 비지니스 로직 레이어이며, 데이터 액세스 레이오는 이 비지니스 로직 레이어 내부에 포함되어 있습니다. 아키텍쳐에 관해서는 이후에 좀 더 자세히 설명드리도록 하겠습니다.)

이제 Memopad의 프리젠테이션 레이어를 만들어 봅시다.

여기서는 간단힌 콘솔 응용프로그램을 만들겠습니다.

솔루션에서 새 콘솔 응용프로그램을 추가하고 이름은 Memopad.Console라고 합니다.

콘솔 응용프로그램에서 새 항목 추가로 응용프로그램 구성 파일을 추가하고 아래와 같이 연결문자열을 설정합니다.

주의할 점은, name 특성은 중복만 아니라면 아무 값이나 지정해도 무방하지만, 위에서 ConfigurationManager.ConnectionStrings[0].ConnectionString로 지정되었기 때문에, <clear />가 먼저 나와서 첫번째 연결 문자열로 만들어줘야 한다는 것입니다.

Memopad.Console의 Program.cs 파일에 아래와 같은 테스트 코드를 작성하고 결과를 확인해봅니다.

콘솔에 "0" 이 출력되면 정상입니다.

여기까지 해서 MP의 사용 방법에 대해 간략하게 살펴보았습니다.

다음 문서에서는 MP가 만들어낸 코드에 대해서 좀 더 자세히 살펴보도록 하겠습니다.

: