안녕하세요.
강의 레벨에서는
테이블과 모델 클래스, 뷰모델 클래스, Dto클래스는 같은 개념으로 설명이 됩니다.
즉, Notes 테이블이라면,
C# 코드에서 Note 클래스 또는 NoteModel 클래스, NoteViewModel 클래스, NoteDto, NoteEntity, NoteObject, NoteTable, NoteBase, ... 등
어떤 이름이건 상관없이 테이블과 일대일로 매핑되는 C# 클래스를 만들어 사용하면 되는데, 이 모든것을 모델 클래스로 표현합니다.
다만,
회원 인증과 같이
로그인 페이지면, 이메일과 암호만 받아서, 리포지토리에 전달하는 경우라면, 이와 관련된 UserLoginViewModel과 같은 클래스를 따로 만들어 관리하면 좋습니다.
회원 정보 표시에서는 암호를 굳이 보여줄 필요가 없기에 UserModel의 일부분인 UserDetailsViewModel과 같은 클래스로 변환해서 출력해도 됩니다.
이러한 모델과 뷰모델간의 매핑을 도와주는 기능중에는 AutoMapper와 같은 유용한 기능도 있지만,
Microsoft Docs를 교과서로 보고 있는 제 강의에서는 매번 필요할 때마다 Select() 메서드 또는 속성에 값을 대입하여 변환하는 방법을 사용합니다.
제 강의 기준으로
대부분은 모델 클래스로 사용하고,
MVC에서 View와 Controller 간의 데이터 입력과 출력 간의 관계에서는 모델 또는 새롭게 뷰모델 클래스를 만들어 사용하곤 합니다.
리포지토리/서비스 클래스와 함께 사용되는 부분은 주로 모델 클래스, 뷰와 컨트롤러에서 함께 사용되는 부분은 뷰모델 클래스를 사용한다고 보면 됩니다.
어쨌든,
제 강의에서는 지금 회신드린 내용을 기준으로 하지만, 다른 개발자와 오픈 소스들은 다른 방법을 사용할 수 있으니,
제 소스를 참고하시면서 다른 아티클들도 더 검색하여 참고하시면서
본인만의 방법을 찾으셨으면 합니다.
감사합니다.
On 2022-03-01 오후 5:25:00, '김준호' wrote:
안녕하세요?
.net core mvc 를 만들면서, 닷넷 노트 샘플 프로젝트 처럼 모델을 별도의 프로젝트로 구성해서
사용하려고 합니다.
그런데, model을 구성중에, viewmodel과 아닌 일반 model의 명명을 하고 있는데
어느 부분이 viewmodel로 구성이 되어야 하고, 아닌지가 하면서도 햇갈리고 있습니다.
code first로 작업중인데요,
일반적인 User 클래스를 일반 모델 명명인 "UserModel"로 사용하고 있는데,
View에서 입력을 받으면, UserViewModel로 만들어야 하는지... 어떻게 해야하는지 어렵습니다.
많은 도움 감사합니다.