엔티티 프레임워크 (Entity Framework, 또는 EF)에서 데이터 베이스에 있는 테이블을 불러오는 건 당연히 쉽죠. 그렇지만 테이블의 칼럼들이 너무 많고 앱에서는 다 필요가 없을 시에는 어떻게 할까요? 원래는 다 가지고 오면 좋은 방법이 아닙니다. 그만큼의 메모리를 차지하는 데다 인터넷을 거쳐서 올 때는 데이터가 많아질수록 API를 불러오는 값이 비싸지죠.
그렇지만 필요한 만큼의 칼럼이 있는 클래스를 만들어 놓으면 어떻게 EF에서 앱으로 오기 전에 서버에서 칼럼들이 걸러져서 그 클래스에 맞춰져서 오게 할 수 있을까요? 제가 말하는 건 서버에서 앱으로 오기 전에 데이터들이 걸러지는 방법입니다 - 다 불러와서 새로 만든 클래스에 맞추는 게 아닙니다 (이런 식이면 데이터 전체다 앱으로 와서 클라이언트에서 걸러지니 좋은 방법이 아니죠).
아주 간단합니다. 우선 간소화된 클래스를 하나 만드세요. 아래 예제는 데이터 베이스에 있는 Student 테이블 중 세 가지 칼럼만 있습니다. 하지만 EF에서는 StudentFiltered라는 entity가 존재하지 않죠.
그리고 아래의 코드로 StudentFiltered라는 entity를 불러옵니다.
그러면 students라는 변수는 Student 타입이 아니고 StudentFiltered라는 타입이 됩니다. 그리고 위의 코드는 SQL 서버상에서는 위의 세 칼럼만 보내지게 되는 거죠. 클라이언트에 도달하는 데이터는 이 세 칼럼만 오게 되죠.
간단하지요?
수고하셨습니다. 즐거운 코딩되세요!