엔티티 대 ESQL 대 Linq의 성능

entity-framework entity-sql linq-to-entities

문제

엔티티 프레임 워크를 사용할 때 ESQL이 Linq보다 엔티티보다 잘 수행됩니까?

필자는 Linq를 Entity에 사용하는 것을 선호하지만, 다른 팀 구성원 중 일부는 ESQL을 사용하는 이유로 성능을 인용하고 있습니다. 두 가지 방법 중 하나를 사용하는 pro / con의 전체 아이디어를 얻고 싶습니다.

수락 된 답변

가장 분명한 차이점은 다음과 같습니다.

Linq to Entities는 멋진 쿼리 이해 구문을 포함하여 강력하게 형식화 된 코드입니다. IntelliSense가 "선택"전에 "â € œfrom"이라는 사실이 당신을 도울 수있게합니다.

Entity SQL은 SELECT 문이 FROM 앞에 오는 구문과 유사한 익숙한 SQL 구문을 사용하여 전통적인 문자열 기반 쿼리를 사용합니다. eSQL은 문자열 기반이므로 동적 쿼리는 문자열 조작을 사용하여 런타임시 기존 방식으로 작성 될 수 있습니다.

덜 분명한 주요 차이점은 다음과 같습니다.

Linq to Entities를 사용하면 "Select new {...}"구문을 사용하여 원하는 결과 모양을 "프로젝트"하거나 "프로젝트"할 수 있습니다. C # 3.0에 익숙하지 않은 익명 형식이이를 허용했습니다.

항상 ObjectQuery <T>를 반환해야하므로 Entity SQL을 사용하여 프로젝션을 수행 할 수 없습니다. 일부 시나리오에서는 ObjectQuery <object>를 사용할 수도 있지만 .Select가 항상 ObjectQuery <DbDataRecord>를 반환한다는 사실을 해결해야합니다. 아래 코드를 참조하십시오 ...

ObjectQuery<DbDataRecord> query = DynamicQuery(context,
        "Products",
        "it.ProductName = 'Chai'",
        "it.ProductName, it.QuantityPerUnit");

public static ObjectQuery<DbDataRecord> DynamicQuery(MyContext context, string root, string selection, string projection)
{
    ObjectQuery<object> rootQuery = context.CreateQuery<object>(root);
    ObjectQuery<object> filteredQuery = rootQuery.Where(selection);
    ObjectQuery<DbDataRecord> result = filteredQuery.Select(projection);
    return result;
}

팀원 중 한 사람이 여기 또는 여기 에서 자세히 설명하는 다른 미묘한 차이점이 있습니다 .


인기 답변

ESQL은 또한 특히 악의적 인 SQL을 생성 할 수 있습니다. 상속 된 클래스를 사용하는 그런 쿼리로 문제를 추적해야만했고 4 줄짜리 작은 ESQL이 100000 자의 몬스터 SQL 구문으로 변환되어 있다는 것을 알았습니다.

Linq 및 컴파일 된 코드에서 동일한 작업이 훨씬 더 관리하기 쉬웠습니까? 20 줄의 SQL을 가정 해 봅시다.

게다가, 다른 사람들이 언급 한 Linq는 강력하게 타입이지만, 편집 및 계속 기능을 사용하지 않고 디버깅하는 것은 매우 짜증나게합니다.

광고



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.