- 건물임대 관리 프로그램(Sample)
- C#, WinForm, MSSQL 2022, DevExpress(Report), Dapper, Repository 패턴, 배포파일 만들기가 적용된 샘플파일
- IDE: Visual Studio 2022
- Language: C#
- Applied Project Template: .NET Framework 4.8.1
- DevExpress v23.2 Winforms App Template Gallery - Fluent Design Application(.Net Framework)
- NuGet
- Dapper
- Third Party Libraries
- DevExpress 23.2
- 메뉴 -> 확장 -> Microsoft Visual Studio Installer Project 2022 설치
- DataBase: MS SQL 2022
- MarkDown
- Git
- Dapper
- DevExpress
- SQL Query
- C# winform의 솔루션 구성방법
- C# 함수, 변수, 클래스등의 명명법
- MSSQL 데이터베이스를 이용한 Table 및 StoredProcedure 작성방법
- Dapper 이용방법
- Repository 패턴 적용방법
- DevExpress를 이용한 화면 디자인 및 Report
- 배포파일 만들기
- 데이터베이스 프로젝트 관리 방법
설치파일
폴더에서 DB 백업파일(압축파일) 또는 DB 스크립트 파일을 사용하여 DB를 만든다.- setup 파일은 SetupBuildingLease\bin\Release 폴더에 BuildingLeaseManagement.msi 임.
- 메뉴가 모두 있는 설치파일은
설치파일
폴더에 BuildingLeaseManagement(Full Version).msi 임
- 메뉴가 모두 있는 설치파일은
- DB Connectionstring 및 sa 비번 변경
- BuildingLeaseUI 프로젝트에서 App.config 파일에서 add key="DatabasePassword" 항목의 value=""으로 설정 후 재실행 후
- C:\Users\사용자명\AppData\Roaming\프로젝트명\프로젝트명.config파일도 DatabasePassword의 value 복사해서 붙여넣기
- 사용자/비밀번호: 관리자/관리자, 사용자/사용자
- 데이터는 2023.09~12월 사이에 있음
BuildingLeaseUI 프로젝트를 시작프로젝트로 하여 디버그 및 빌드하여 볼 수 있음
프로젝트시 DB 및 화면 설계전에 용어정리 먼저 하여야 한다.(한국어, 영어)
- Solution Items의 README.md, 0_CodingStyle.md, 업무분석.md(용어정리)을 먼저 읽고, 각 프로젝트의 README파일을 읽을 것.
- 설명 및 문서 파일은 markdown 문법으로 작성(*.md) 하였음.
- 각각의 프로젝트 생성 방법은 각 프로젝트의 README.md 파일 참고
- Setup 후 환경설정 파일 위치: % AppData %\Roaming 위치.
- C:\Users\사용자명\AppData\Roaming\프로젝트명\프로젝트명.config
- DB는 MS SQL Server 2022를 사용.
- sa 비번 변경시 BuildingLeaseUI 프로젝트에서 App.config 파일에서 add key="DatabasePassword" 항목의 value=""으로 설정후 재실행
- 현업에서 데이터베이스 생성 및 초기 데이터 삽입 : BuildingLeaseData폴더내 Script.BuildingLease_Database.sql, Script.PostDeployment.sql 실행
- 쿼리는 StoredProcedure 사용.
- DB 연동은 Dapper를 사용(ADO.NET보다 사용편리)하여 Repository 패턴을 적용함.
- DevExpress의 속성편집은 디자인 모드(run Design)를 최대한 이용하였음.
- DevExpress의 Form 및 User Control의 layout은 Layout Manager를 사용하였음
- instant Layout Assistant에서 Add Control -> Layout & Containers-> Layout Manager선택
- 아이콘은 DevExpress에서 제공하는 이미지를 이용하였음.
- SetupBuildingLease(배포파일) 프로젝트 생성 방법은 Solution Items-> 0_Setup_Project_배포방법.md 파일 참고
- 배포는 0_ClickOnes_배포방법.md 또는 0_Setup_Projcet_배포방법.md 파일을 참고할 것.
각각의 프로젝트 생성 방법은 각 프로젝트의 README.md 파일 참고
- API: 솔루션에서 사용할 라이브러리 관리
- BuildingLease.Library: UI 관련 라이브러리
- BuildingLeaseDataManager.Library: Database관리 라이브러리(Dapper 이용)
- DataBase: 데이터베이스 스크립트 관리 및 DB에 게시하여 실제 DB에 데이터베이스를 생성한다.
- Solution Items: 필요한 문서를 관리한다.
- 솔루션 -> 추가 -> 기존 항목 -> 문서 폴더내의 파일을 선택해서 추가하면 자동으로
Solution Items
로 폴더가 생성되며, 폴더명은 수정하지 말것.
- 솔루션 -> 추가 -> 기존 항목 -> 문서 폴더내의 파일을 선택해서 추가하면 자동으로
- UI: UI 관련 프로젝트 관리
- BuildingLeaseUI: BuildingLease UI
- SetupBuildingLease: 배포파일 만들기
- Solution Items-> 0_Setup_Project_배포방법.md 파일 참고
- 만약 버전변경을 한다면 Assembly version은 고정하고, Assembly File Version만 변경할 것.
- => Assembly version 변경 시 충돌 가능성 있음
- BuildingLeaseDataManager.Library.csproj
- SqlDbAccess(사용)
- Internal.DataAccess의 DBConnection(사용)
- DataAccess(사용안함): UserData, SqlDataAccessSample, AsyncSqlDataAccessSamples
- 이 경우 Internal.DataAccess.SqlDataAccess에서는 SqlClient를 직접 작업하며,
- DataAccess.SqlDataAccessSample에서는 DB가 어떤 종류인지 몰라도 된다는 장점이 있다.
- 금액 type: C#에서 decimal , sql에서 money, 입력은 정수로 입력됨
- control nameing: 의미 + control종류, LoginForm, okButton, userNameTextEdit
- Method nameing: AddDisplay라는 이름은 별도의 DisplayModel을 반환하는 경우에 붙인다.
- Method nameing: 기존 Model을 사용하는 경우는 Gets 사용
- 이미지를 사용할 때 Project resource 대신 local resource, form resource로 저장하였음
- => 장점: 폼을 다른 프로젝트로 이동 시에 이미지 파일이 없어도 이미지가 사라지는 현상이 없음, form.resx 파일 안에 바이너리로 저장
- => 단점: 동일한 이미지가 여러 곳에 사용된 경우 변경 시 폼마다 다시 저장해야 한다.
- Project resource 사용
- => 장점: 폼을 다른 프로젝트로 이동 시에 프로젝트에서 resouece에 image를 지정해주거나 프로젝트의 Resources.resx 파일 복사하면 동일한 이미지가 여러곳에 사용된 경우 일괄 변경이 된다.
- => 단점: 폼을 다른 프로젝트로 이동 시에 기존 이미지 파일이 없거나 Resources.resx파일이 깨진 경우 이미지가 사라지는 현상이 있음.
- local resource, form resource 사용
- => 장점: 폼을 다른 프로젝트로 이동 시에 이미지 파일이 없어도 이미지가 사라지는 현상이 없음, form.resx 파일 안에 바이너리로 저장
- => 단점: 동일한 이미지가 여러 곳에 사용된 경우 변경 시 폼마다 다시 저장해야 한다.