상세 컨텐츠

본문 제목

Entity Framework Core - Entity Change (엔티티 체인지 하기) - C# & .NET

본문

엔티티 프레임워크 (Entity Framework, 또는 EF)에서 데이터 베이스에 있는 테이블을 불러오는 건 당연히 쉽죠.  그렇지만 테이블의 칼럼들이 너무 많고 앱에서는 다 필요가 없을 시에는 어떻게 할까요?  원래는 다 가지고 오면 좋은 방법이 아닙니다.  그만큼의 메모리를 차지하는 데다 인터넷을 거쳐서 올 때는 데이터가 많아질수록 API를 불러오는 값이 비싸지죠.
 
그렇지만 필요한 만큼의 칼럼이 있는 클래스를 만들어 놓으면 어떻게 EF에서 앱으로 오기 전에 서버에서 칼럼들이 걸러져서 그 클래스에 맞춰져서 오게 할 수 있을까요?  제가 말하는 건 서버에서 앱으로 오기 전에 데이터들이 걸러지는 방법입니다 - 다 불러와서 새로 만든 클래스에 맞추는 게 아닙니다 (이런 식이면 데이터 전체다 앱으로 와서 클라이언트에서 걸러지니 좋은 방법이 아니죠).
 

728x90

아주 간단합니다.  우선 간소화된 클래스를 하나 만드세요.  아래 예제는 데이터 베이스에 있는 Student 테이블 중 세 가지 칼럼만 있습니다.  하지만 EF에서는 StudentFiltered라는 entity가 존재하지 않죠.

public class StudentFiltered
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

 

반응형

그리고 아래의 코드로 StudentFiltered라는 entity를 불러옵니다.

var students = dbContext.Students.Select(p => new StudentFiltered() {
    Id = p.Id,
    Name = p.Name,
    Age = p.Age
}).ToList();

그럼 students라는 변수는 Student 타입이 아니고 StudentFiltered라는 타입이 됩니다.  그리고 위의 코드는 SQL 서버상에서는 위의 세 칼럼만 보내지게 되는 거죠.  클라이언트에 도달하는 데이터는 이 세 칼럼만 오게 되죠.
 

간단하지요?


수고하셨습니다.  즐거운 코딩되세요!


도움이 되셨거나 즐거우셨다면 아래의 ❤️공감버튼이나 구독버튼을 눌러 주세요~  감사합니다

 

 

728x90
반응형

관련글 더보기