2017-10-06 1 views
-1

내 모델에서 큰 데이터 세트가있는 C# WPF MVVM 프로젝트에서 저장소 서비스 패턴을 구현하는 딜레마가 있습니다.큰 모델에 대한 저장소 서비스 패턴의 올바른 구현

필자는 약 40 개의 엔티티를 작성한 곳에서 EntityFramework 데이터베이스를 먼저 사용했기 때문에 제 모델이 상당히 크고 제게는 40 개의 다른 리포지토리를 구현하는 것이 적절하지 않습니다. 일반적인 리포지토리 서비스 패턴을 사용했기 때문입니다.

public interface IEntityRepository<T> : IDisposable where T : class 
    { 
    IQueryable<T> FindBy(Expression<Func<T, bool>> predicate); 
    IEnumerable<T> getEntities(); 
    T RetrieveEntity(int entityID); 
    void CreateEntity(T entity); 
    void UpdateEntity(T entity); 
    void DeleteEntity(T entity); 
    void Save(); 
    } 

을 그리고 여기에 방법을 구현하는 클래스의 서명입니다 :

내 저장소는 다음과 같습니다. 지금

public class EntityRepository<T> : 
    IEntityRepository<T> where T : class 
    { 
     private DbContext context; 
     public EntityRepository(DbContext context) 
     { 
     this.context = context; 
     }   

     ..... 

    } 

내 질문은, 어떻게 것 내 모델에서 모든 단일 엔티티를 구현하지 않아도 같은 서비스보세요. 저는 엔티티의 타입 이름으로 서비스를 동적으로 만들 수있는 것과 같은 것을 찾고 있습니다.

누구든지 내 문제에 대한 해결책을 알고 있습니까? 감사합니다.

+0

나는 당신이 지금까지 얻었던 연구가 구현 예제를 가지고 있어야한다고 생각한다. SO는 코드 작성 서비스가 아니므로 작성한 코드로 문제점을 물어볼 필요가 있습니다. – Crowcoder

답변

0

리포지토리 클래스가 실제 데이터베이스 엔터티와 일대일로 매핑하는 경우 저장소 패턴이 유용한 레이어라고 확신하지 않습니다.

서비스 레이어 또는 다른 유형의 외관이 더 좋을 수 있습니다. 엔터티 프레임 워크 위에 데이터 액세스 계층을 요구하는 경우에도 쿼리 패턴을 사용하여 성공할 수 있습니다. 이 패턴에서 각 쿼리 클래스에는 모델을 쿼리 할 수있는 매개 변수를 정의하는 매개 변수 개체가있을 수 있습니다. 반환 된 데이터가 비즈니스 또는 사용자 인터페이스 계층에서 사용하기에 더 적합한 구조로되어있는 곳. 각 쿼리 개체는 비즈니스 또는 사용자 인터페이스 계층의 일부와 관련이 있습니다. 그런 다음 쿼리 패턴은 단일 엔터티에 액세스하는 것 이상의 데이터를 쿼리해야 할 때 사용할 수 있습니다.