다음을 통해 공유


LINQ to Entities 개요

오늘날 작성되는 대부분의 비즈니스 응용 프로그램은 관계형 데이터베이스의 데이터베이스에 액세스합니다. 이러한 응용 프로그램은 특정 시점에 관계형 형식으로 표현된 데이터와 상호 작용하게 됩니다. 관계형 모델은 개체 지향 프로그래밍에서 사용하는 개념적 모델링이 아니라 효율적인 저장과 검색을 위해 최적화됩니다. 여러 개의 표준화된 테이블이 하나의 클래스에 해당하는 경우가 많으며 클래스 간의 관계는 테이블 간의 관계와 동일한 방식으로 표현되지 않습니다. 비즈니스 응용 프로그램 개발자는 프로그래밍 언어를 두 개 이상 사용해야 하는 경우가 많습니다. 하나는 비즈니스 논리와 프레젠테이션 계층을 위한 상위 수준 언어(예: Visual C# 또는 Visual Basic)이고 다른 하나는 데이터베이스와 상호 작용하는 쿼리 언어(예: Transact-SQL)입니다. 따라서 효과적으로 작업을 수행하려면 여러 언어에 능숙해야 하며 개발 환경에서 언어 불일치 문제도 발생하게 됩니다. 예를 들어 데이터 액세스 API를 사용하여 데이터베이스에 대한 쿼리를 실행하는 응용 프로그램에서는 따옴표를 사용하여 쿼리를 문자열 리터럴로 지정합니다. 이 쿼리 문자열은 컴파일러에서 인식되지 않으므로 잘못된 구문, 참조되는 열이나 행이 실제로 있는지 여부 등의 오류가 검사되지 않습니다. 쿼리 매개 변수에 대한 형식 검사뿐 아니라 IntelliSense 지원도 제공되지 않습니다.

그러나 엔터티 프레임워크를 사용하면 기본 데이터베이스 테이블과 해당 데이터가 저장된 열을 고려할 필요 없이 고객이나 고객 주소와 같은 데이터를 도메인 특정 개체 및 속성의 형태로 다룰 수 있습니다. 자세한 내용은 엔터티 데이터 모델을 참조하십시오. LINQ를 사용하면 개발자는 별도의 쿼리 언어를 사용하지 않고도 응용 프로그램 코드에서 집합 기반 쿼리를 작성할 수 있습니다. ADO.NET에서는 엔터티 프레임워크의 개체 서비스 인프라를 통해 관계형 데이터를 비롯한 공통된 개념적인 데이터 뷰를 .NET 환경에서 개체로 제공할 수 있습니다. 이를 통해 개체 계층은 LINQ 지원을 위한 이상적인 대상이 됩니다. 개발자는 이 LINQ 기술 LINQ to Entities를 통해 개발 환경에서 직접 LINQ 식과 LINQ 표준 쿼리 연산자를 사용하여 엔터티 프레임워크 개체 컨텍스트에 대한 강력한 형식의 유연한 쿼리를 만들 수 있습니다. Microsoft .NET Framework 버전 2.0에서 작성한 응용 프로그램에서처럼 쿼리는 응용 프로그램 코드에 포함된 문자열 리터럴이 아니라 프로그래밍 언어 자체로 표현됩니다. 구문 오류와 멤버 이름 및 데이터 형식의 오류는 컴파일러에서 포착되어 컴파일 타임에 보고되므로 엔터티 데이터 모델과 응용 프로그램 간에 형식 문제가 발생할 가능성이 줄어듭니다.

LINQ to Entities 쿼리는 개체 서비스 인프라를 사용합니다. ObjectContext 클래스는 CLR 개체로 엔터티 데이터 모델과 상호 작용하기 위한 기본 클래스입니다. 개발자는 ObjectContext를 통해 제네릭 ObjectQuery 인스턴스를 생성합니다. ObjectQuery 제네릭 클래스는 형식화된 엔터티의 컬렉션 또는 인스턴스를 반환하는 쿼리를 나타냅니다. 반환된 엔터티 개체는 업데이트 가능하며 개체 컨텍스트에 놓입니다. 익명 형식의 멤버로 반환되는 엔터티 개체의 경우도 마찬가지입니다.

단원 내용

참고 항목

기타 리소스

LINQ to Entities