3

Asp.Net 웹 API 응용 프로그램에서 리포지토리 패턴을 구현하고 있습니다.일반 리포지토리 패턴 구현 - 엔티티 키 유형

public abstract class Repository<T> : IRepository<T> where T : EntityBase 
{ 
    private DbContext context_; 

    public Repository(DbContext context) 
    { 
     context_ = context; 
    } 

    public virtual async Task<T> GetAsync(int id) 
    { 
     return await context_.Set<T>().FindAsync(id); 
    } 

    ... 

} 

문제 : 다음

내가 int 유형의 단일 키가 엔티티 작동하는 방법 GetAsync(int id)을 보유하고 있습니다.

그러나 키가 string 인 엔티티와 복합 키가있는 엔티티가 있습니다.

질문 :

어떻게이 문제를 극복 할 수 있는가?

일반적인 방법으로 문제를 극복 할 수 있습니까?

답변

3

당신은 FindAsync 매개 변수로 객체의 배열을 받아들이는 것을 알 수 있습니다, 그래서 당신은이처럼 GetAsync을 변경할 수 있습니다

당신은 예를 들어, 당신이 원하는 키 GetAsync를 호출 할 수있는 그런
public virtual Task<T> GetAsync(params object[] keys) 
{ 
    return context_.Set<T>().FindAsync(keys); 
} 

:

사이드 프레임 : 엔터티 프레임 워크 Set<T>은 이미 일반적인 저장소이므로 다른 저장소를 추가해도 실제로 많은 이점이 추가되지 않습니다.

+0

감사합니다. 나는'params object [] keys'를 발견하지 못했습니다. – Rahul