2010-08-22 2 views
0

저는 계층화 된 아키텍처를 사용하여 프로젝트를 개발 중입니다. 나는 Entity Framework, DAL 및 응용 프로그램 계층에 의해 반환 된 개체를 소비하는 비즈니스 논리 계층을 사용하고있는 DAL이 있습니다.ADO.NET EF as DAL

나는이 생각을 잘 모르겠다. 그래서 나는 네가 생각하는 것을 묻는다.

내 DAL은 매퍼를 기반으로합니다. BLL이 내 데이터를 조작하는 데 사용하는 유형 (맵퍼)이 있습니다. 이 매퍼는 DTO를 반환합니다. 왜냐하면 BLL에 어떤 EF 객체를 노출하고 싶지 않았기 때문에 구현이 EF에 의존하지 않기 때문입니다.

이 모든 매퍼가 할 같은 하나의 '테이블'에 CRUD 작업입니다 :

using (var contex = new EFEntities()){ 
    var obj = (from x in context.Table where x.ID == param select x).SingleOrDefault; 
    return Map(x.ToList()); 
} 

지도 방법은 값을 매핑하는 일부 속성을 가진 DTO에 EF 객체를 매핑 전 폭로하고 싶다.

더 세련된 접근 방식이 있습니까? 나는 EF를 사용하여 데이터베이스에 쉽게 액세스 할 수있다. ADO.NET 코드를 작성할 필요가 없다.

모든 의견을 환영합니다.

감사합니다.

답변

0

나는 내가 엔티티 프레임 워크는 DAL 및 응용 프로그램 층에 의해 반환 된 객체 을 소모 비즈니스 로직 층을 사용하고있는 DAL 있습니다.

DAL에 완전한 개체 레이어를 넣는다면 그것은 변태입니다. EF는 DAL 이상입니다. DAL과 응용 프로그램 층에 의해 반환 개체를 소비

비즈니스 로직 계층.

"빈혈 개체 모델"이라고 생각할 수있는 용어는 좋은 용어가 아닙니다.

에 대한 더 우아한 접근 방법이 있습니까?

EF와의 싸움을하지 마십시오. 만약 당신이 그것을 좋아하지 않는다면, 그것을 사용하지 마십시오 - 훨씬 더 나은 프레임 워크가 있습니다.

+0

그러나 EF가 작동하는 방식을 좋아합니다. 어쩌면 나는 그것을 완전히 이해하지 못했지만 나는 그것을 좋아한다. Btw는 DAL이 EF를 사용하여 데이터에 액세스했음을 의미합니다. 하지만 EF를 내 DAL로 제한하고, 다른 레이어에는 DAL에서 DTO를 제공합니다. – Alka

+0

당신은 OO에 대해 아무것도 이해하지 못합니다 - 제가 말했듯이 이것은 EF가 할 수있는 것을 왜곡 한 것입니다. – TomTom

+0

그것을 사용하는 올바른 방법은 무엇입니까? – Alka