2012-08-01 2 views
0

나는이 질문이 여러 번 묻는다는 것을 알고 있지만, 나는 내가 필요한 것을 분명히 알 수 없었다.Entity Framework를 사용하여 3 단계 접근 방식을 구현하는 방법은 무엇입니까?

3 계층 접근 방식을 사용하여 다시 실행해야하는 WPF 응용 프로그램이 있습니다.

저는 데이터 모델을 만들고 데이터를 쿼리하기 위해 Linq 쿼리를 사용하기 위해 Entity Framework를 사용했습니다.

objCustomer = dbContext.Customers.Where(c => c.CustCode == oLoadDtl.CustNo).First(); 

전 데이터베이스에서 레코드를 가져 오기 위해 프로그램에서 Linq 쿼리를 사용해야합니다.

그래서 모든 항목이 DAL, 비즈니스 로직 및 UI 레이어에 포함되는지 알고 싶습니다.

또한 어떻게 분리합니까?

엔티티 데이터 모델을 DAL로 간주 할 수 있습니까?

엔티티 모델을 별도의 클래스 라이브러리에 저장하는 것이 더 좋은 생각입니까?

답변

1

DataAccess라는 특수 클래스를 만들어 EntityFramework-invokes를 캡슐화하는 것이 좋습니다. 비즈니스 로직의 경우 모델 클래스를 만들 수 있으며 필요한 경우 DAL을 사용합니다. 다른 세부 정보는 응용 프로그램에서 수행해야하는 작업에 따라 다릅니다. 예를 들어 :

//DAL 
public class DataAccess 
{ 
    public static void GetCustomerByNumber(int number) 
    { 
     var objCustomer = dbContext.Customers.Where(c => c.CustCode == number).First(); 
     return objCustomer; 
    } 
} 

//Models 
public class Customer 
{ 
    public string Name { get; set; } 
    public int Number { get; set; } 

    public Customer GetCustomerByNumber(int number) 
    { 
     return DataAccess.GetCustomerByNumber(number); 
    } 

    public void ChangeProfile(ProfileInfo profile) 
    { 
     //... 
    } 
} 

홈페이지 가지 확장 성, 재사용 성 및 솔루션의 효율성이다.

+0

각 데이터베이스 테이블과 각 CRUD 작업에 대한 클래스를 만들어야한다는 의미입니까? – sony

+0

메서드가 아닌 클래스 :) 예를 들어 20 개의 엔터티 - 각 엔터티에 대해 4 개 이상의 CRUD 작업 - 약 80 개의 정적 메서드. 최신 개발자 도구를 사용하면 쉽게 관리 할 수 ​​있습니다. 어떤 엔티티에 대해 CRUD 메소드의 양이 6보다 크면이 엔티티를 작동시킬 DataAccess 클래스에 중첩 클래스를 만듭니다. 다른 말로하면, 의미 론적으로 비슷한 방법을 사용하는 대규모 그룹을 대상으로합니다. –

관련 문제