2010-03-09 2 views
4

나는 MVC 2 엔티티 프레임 워크를 사용하는 경우 선호하는 솔루션 설치에 대한 몇 가지 정보를 찾기 위해 노력하고있어 나를 3 층에서이 웹 응용 프로그램을 설정하는 데에 대부분의 직관적 인 것 같다 :MVC 2 및 Entity Framework - Entity를 별도 레이어에 분류해야합니까?

  • MyProject.Web (프리젠 테이션을위한 MVC 프로젝트)
  • MyProject.Data (엔티티 프레임 워크를 사용하여 데이터 게이트웨이 층은 DB에 말할 수)
  • MyProject.Tests (새로운 MVC 프로젝트)

이를 설정할 때 생성으로 테스트 프로젝트 시험에 반하는 것 같다. 내가 찾고있는 파일과 데이터베이스 (MVC 프로젝트를 데이터베이스와 직접 중재하는 것으로 보이는 문서 (예 : NerdDinner). NerdDinner 예제는 데이터 액세스를 MVC 모델과 혼합 된 저장소 클래스에 넣습니다.

나는 내게 가장 좋은 방법으로 보았고 나의 별도의 Data 프로젝트에 "ADO.NET 엔터티 데이터 모델"항목을 만들었지 만 MVC를 사용하려고하면 오류가 발생합니다. 항목을 나열하십시오 :

"지정된 메타 데이터 리소스를로드 할 수 없습니다."

내 MVC 프로젝트에도 엔터티 데이터 모델의 복사본이 없으면 예외입니다.

이 오류를 조사하기에 너무 멀기 전에 필자가 저장소에서 데이터 액세스 만 사용하여 징계를받을 수있을 때 나는 순수주의 프레임 워크에 맞서 싸우고 있는지 알아야한다.

so : - Entity Framework def를 다른 프로젝트에도 적용 할 수 있습니까? - 다른 MVC 기능을 이와 같이 분리하여 희생시킬 수 있습니까? (예 : 유효성 검사) - 올바른 방향으로 가고 다른 사람들이 동의하는 경우 다른 예제 나 문서가 있습니까?

답변

1

예, 엔티티를 별도의 어셈블리에 배치하는 것이 좋습니다. 은 "지정된 메타 데이터 리소스를로드 할 수 없습니다"오류를 해결하기

한 가지 방법은 명시 적으로 연결 문자열에 어셈블리를 지정하는 것입니다 :

<connectionStrings> 
    <add name="MyEntities" connectionString="metadata=res://*/AssemblyName.bin.Namespace.MyEntities.csdl|res://*/AssemblyName.bin.Namespace.MyEntities.ssdl|res://*/AssemblyName.bin.Namespace.MyEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=SERVER_NAME;Initial Catalog=DBName;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/> 
</connectionStrings> 

주, 특히, AssemblyName.bin.Namespace.MyEntities. 이것은 당신이 이렇게 처음으로 그것을 알아 내기 위해 반사판을 사용해야 할 수도 있습니다. "AssemblyName.dll"라고 어셈블리를 가정 어셈블리 자격을 갖춘 자원 이름 (이다.

This answer도 도움이 될 수 있습니다.

+0

뛰어난 - 감사 :> 여전히 비록 오류가 발생. 좀 더 놀 것입니다. 건배. – Wolo

0

Entity Framework 정의를 다른 프로젝트에 넣을 수도 있습니다. 데이터 계층을 여러 인터페이스 (MVC, WCF, WPF)에서 공유해야하는 경우 개인적으로 다른 프로젝트에 보관합니다.

EntityConnection을 만들고 사용하는 방법에 대한 두 개의 MSDN 기사.

Build an EntityConnection

Use EntityConnection with an Object Context