2009-10-14 4 views
2

우리 프로젝트에서 ADO.NET 엔터티 프레임 워크를 사용하고 우리가 가지고있는 3 계층 아키텍처 패턴 (프레젠테이션 계층 - 비즈니스 계층 - 데이터 액세스 계층) 각 계층의 프로젝트에 의존합니다.3 계층 아키텍처에서 "ADO.NET Entity Framework"파일은 어디에 있습니까?

엔티티 모델 파일을 만들 때 어디에서 DAL 또는 BL에 넣을 수 있습니까? DAL에 배치하고 프리젠 테이션 계층에서 비즈니스 계층을 통해 도메인 오브젝트에 액세스하려는 경우 프리젠 테이션 계층에 DAL에 대한 참조를 추가해야합니다. 또한 DAL에서 생성되는 객체의 유형을 얻으려면 어떻게해야합니까? 반면에 엔터티 모델 파일을 비즈니스 계층에 넣어야합니까? 더 나은 이유는 무엇입니까?

+0

이전 질문에 대한 답변을 수락하십시오. 그렇지 않으면 사람들은 답변을 게시하는 데 관심이 없습니다. –

답변

0

이상적으로 EntityFramework 생성 코드는 데이터 계층을 구성합니다. 기본적으로 데이터 레이어에있는 것과 같은 비즈니스 계층에 같은 종류의 개체가 필요한 경우 비즈니스 계층에서 반복됩니다. 불행히도 EntityFramework는 비즈니스 계층에서 전혀 도움이되지 않습니다.

이제 EntityFramework를 결합 된 데이터/비즈니스 레이어로 사용할 수 있다고 말한 것을 읽게됩니다. 그건 Separation of Concerns을 위반하기 때문에 나는 당신에게서 멀어 지도록 안내 할 것이지만 어쨌든 많은 사람들이 그렇게 할 것이라고 확신합니다. EntityFramework에서 NHibernate로 언젠가 옮기고 싶다면 ORM을 나머지 코드베이스와 분리하고 ORM과의 결합을 최소화하는 것이 가장 좋습니다 (종종 Repository pattern과 같은 것을 구현하는 것).

MVC의 언어를 사용하는 사람들은 종종 EntityFramework를 모델로 사용하고 데이터 계층과 비즈니스 계층 (일반적으로 모델에 모두 존재 함)을 구분할 수도 있고 그렇지 않을 수도 있습니다. MVC를 사용하더라도 비즈니스 규칙과 비즈니스 논리에서 데이터 액세스를 분리해야한다고 생각합니다.

0

엔티티를 별도의 클래스 라이브러리 프로젝트에 배치 할 수 있습니다 (예 : Common Entity Library). 이 라이브러리는 다른 앱 계층에서 참조 할 수 있습니다. 그런 다음 응용 프로그램 도메인에서 컬렉션을 사용하여 작업 할 수 있습니다.

0

Entity Framework 은 귀하의 DAL이입니다. 백엔드 데이터베이스의 지속성 서비스에서 Entity Framework에 의해 공개 된 Model 객체를 추상화하는 데 필요한 도구를 제공합니다.

Entity Framework는 비즈니스 레이어와 DAL을이 오래된 세 레이어 패턴으로 이어져 있습니다. Entity Framework를 사용하면 Presentation-> Business-> Data의 관점에서 생각을 멈추고 View-> Model의 관점에서 생각하면됩니다.

관련 문제