2012-12-13 2 views
0

MVC 3 및 ​​Entity Framework 4.1로 사이트를 개발 중입니다. MVC 3 Entity Framework를 사용한 개발에 익숙하지 않아 일부 디자인 결정에 도움이되기를 바랍니다. 내 사이트에는 사용자가 갈 수있는 약 15 페이지 밖에 없습니다. 각 페이지에 대한 컨트롤러를 갖기보다는 하나의 컨트롤러 클래스 만 가지려고합니다. (그러나 각 페이지에 대한 모델을 가지고 있습니다.) 컨트롤러 클래스에서는 각 페이지의 영역을 확장하여 쉽게 확장 할 수 있습니다. 그래서 예를 들어, RedirectToAction Homepage가있는 SiteController에 LogOn Method를 갖게 될 것이고 Hompage() Method가 HomePage 영역의 SiteController에 살게 될 것입니다.엔티티 프레임 워크 디자인을 사용하는 ASP.NET MVC 3

동료로부터 설계된 데이터베이스가 이미 있습니다. (데이터베이스에 약 12 ​​개 정도의 테이블이 있습니다) - Entity Framework에서 코드를 작성하는 방법을 살펴 보았습니다. 그러나이 코드를 다음과 같이 유지하는 것이 좋습니다. DAL 폴더가 있고 각 페이지마다 내 모델이 있습니까? 그래서 예를 들면 - 데이터베이스에 저장 될 FileName이 있습니다. 내 홈페이지에서 FileName을 보여주고 싶습니다. 그래서 Homepage Model에서 문자열 FileName을 가지고 HomePage()보기 메소드에서 model.FileName을 db.context (db에서 파일 이름 가져 오기)로 설정하는 것이 좋습니다.

내 SiteController의 instanstiation 포인트에있는 모든 db 컨텍스트를 가장 잘 나타내야할까요, 아니면 그냥 그들을 필요로하는 메소드에 instansiate할까요? 즉, Homepage View에 테이블 1과 테이블 2가 필요하고 Hompage() 메소드에서 새로운 테이블이 필요하고 다른 뷰 메소드가 데이터를 필요로하거나 테이블 3/4에 데이터를 저장해야한다면 해당 메소드의 시작에서 새로 추가해야합니까?

답변

1
  1. EF Power 도구를 사용하여 데이터베이스를 리버스 엔지니어링하면 폴더 구조가 만들어집니다.
  2. 페이지 당 하나의 컨트롤러를 유지하십시오. 이러한 페이지가 실제로 동일한 프로세스의 일부인 마법사 유형 데이터 입력 시나리오의 일부인 경우가 아니면 여러 컨트롤러로 분리하십시오.
  3. 새 컨트롤러를 마우스 오른쪽 버튼으로 클릭하고 추가하십시오. 엔티티 프레임 워크 컨텍스트를 사용하여 컨트롤러를 생성하려면 내장 된 스캐 폴딩을 사용하십시오 (위의 1 단계 이후에 응용 프로그램을 빌드하고 "컨트롤러 추가"대화 상자에서 컨텍스트 클래스를 선택하십시오). 그것은 당신을 위해 뷰와 컨트롤러를 생성합니다. 데이터 입력을 원할 때마다이 작업을 반복하십시오.
  4. 컨텍스트는 이미 생성 된 컨트롤러의 일부로 인스턴스화됩니다. 다른 작업은 수행하지 않아야합니다 (처분 - 생성 된 코드는 컨트롤러가 폐기 된 이후에도 처분합니다)
+0

Adam - 의견을 보내 주셔서 감사합니다. 내가 선택한 사이트가 마법사 유형 데이터 항목 (예 : 이동하는 사이트의 각 페이지가 서로 관련되어 있음) 때문에 One Controller로갔습니다. In 메뉴에서 사용자는보고 및 관리자를 선택할 수 있습니다 - 나는 그들을 위해 별도의 컨트롤러를 만들 것이라고 생각합니다. –

+0

또한 각 페이지에 대해 하나의 모델을 사용하기로 결정했습니다. 내 페이지가 둘 이상의 DB 테이블의 데이터를 표시 할 수 있기 때문입니다. 그래서 예를 들어 - 파일 세부 정보 db 테이블, 연락처 db 테이블 및 회사 db 테이블의 데이터를 표시해야하는 페이지에서. 그래서 나는 내 모델에 그것들을 만들어서 Linq 질의를하고 내가 필요로하는 것을 돌려 줄 수있다. –

+0

나는 항상 ViewModels을 권하고있다. –

1

당신이 쓴 첫 번째 관찰 :

각 페이지에 대해 컨트롤러가보다는 - 난 그냥 하나의 컨트롤러 클래스 나는 완전히 그 동의

을 가지고 가고 있었다. 여러 이유로.

  • SRP 일명의 SoC ( 의 분리) (단일 책임 원칙)
  • 의 IoC (Inversion of Control에)
  • SPOT (진리의 단일 포인트 : 다음 항목에 대한

    구글 저 작은)

  • LSP (리스 코프 치환 원칙)
  • OCP - 개폐 원리
관련 문제