12

는 기본 ASP.NET MVC 응용 프로그램 폴더 구조를 고려할 수 있습니다, 그래서이처럼 보이는 :MVC 응용 프로그램에서 Entity Framework 데이터 모델을 어디에 둘까요?

-App_data 
-Content 
-Controllers 
    HomeController.cs 
-Models 
    AccountModels.cs 
-Scripts 
-Views 

내 질문은 : 어디 엔티티 프레임 워크 데이터 모델 (EDMX) 파일을 넣을 수있는 가장 좋은 장소는? 모델 폴더입니까? 네, 좋은 해결책은 새로운 프로젝트를 소개하고 MVC 애플리케이션에 참조하는 것이지만 지금은 잊어 버릴 수 있습니다.

+1

** 왜 ** 앞에서 올바른 해결책을 배제하고 싶습니까?이 모든 것들을 별도의 어셈블리에 넣으시겠습니까 ?? 가장 좋고 깨끗한 접근 방법입니다 ** ** 사용하십시오 ** ** –

답변

17

작은 프로젝트의 경우 모델의 일부 여야합니다. 대형 제품의 경우 저장소와 관련 모델이 별도의 어셈블리에있을 수 있습니다.

6

글쎄 이것은 논쟁의 여지가 있지만 폴더의 경우 +1 에 투표 할 것입니다.

유일한 후보자는 App_Data이지만 일반적으로 파일 기반 데이터베이스 (예 : SQL Server CE .MDF) 및 IIS에서 제공하지 않을 파일입니다. EDMX로

데이터베이스의 추상화입니다, 그것은 모델 폴더로 이동합니다.

프로젝트가 커지면 EF 모델을 다른 프로젝트로 옮겨야합니다. 미래를 대비하려면 컨트롤러가 리포지토리/인터페이스를 통해 EDMX에 액세스하도록하십시오. 따라서 DAL을 다른 프로젝트로 옮길 때는 참조를 추가하고 using 문을 추가하면됩니다.

0

내 의견은 당신이 도메인 객체, datacontracts 등 등 ... 등 DataContracts, 모델, 예외 같은 많은 폴더를 포함 MyProject.Infrastructure처럼 에 대한

  1. 별도의 프로젝트를 생성해야한다는 것입니다
  2. 가 DATAACCESS 느릅 나무에 대해 별도의 프로젝트가 DBContexts 및 저장소, I는 EF-모델을 둘 것입니다 나중에 쉽게
+0

두 개의 별도 프로젝트가 실제로 필요합니까? 하나의 프로젝트에 도메인 클래스와 데이터 액세스 클래스를 추가하는 것이 좋습니다. 많은 다른 백엔드 데이터 저장소가있을 경우 도메인 클래스와 데이터 액세스를위한 별도의 비협조적인 프로젝트가 가능할 수 있습니다. –

1

에서 마이그레이션을 관리 할 수있는이 방법을 포함 (일명 물리적 모델) 등 자체 어셈블리 또는 메인 MVC 응용 프로그램 외부의 "코어"어셈블리에서 사용하는 방법에 대해 설명합니다. 비즈니스 로직/도메인 로직/도메인 서비스/등등에도 동일하게 적용됩니다. MVC-Web-Application과 관련된 웹 이외의 것들을 분리하십시오.

이렇게하면 앱의 핵심 부분을 재사용하는 데 도움이됩니다. 예를 들어, 서비스, 명령 줄 도구, 마이그레이션 도구 등으로 노출해야하는 경우

이 항목을 자체 어셈블리에 저장하는 것이 매우 쉽고 몇 분이 걸립니다. 각각의 모든 작은 애플 리케이션도.

관련 문제