이 연습에서는 복잡성을 최소화하면서 기본적인 엔드투엔드 LINQ to SQL 시나리오를 제공합니다. 샘플 Northwind 데이터베이스에서 Customers 테이블을 모델하는 엔터티 클래스를 만듭니다. 그런 다음 런던에 있는 고객을 나열하는 간단한 쿼리를 만듭니다.
이 연습은 LINQ to SQL 개념을 파악하는 데 도움이 되도록 코드를 중심으로 디자인되었습니다. 일반적으로 개체 관계형 디자이너를 사용하여 개체 모델을 만듭니다.
비고
컴퓨터는 다음 지침에서 Visual Studio 사용자 인터페이스 요소 중 일부에 대해 다른 이름 또는 위치를 표시할 수 있습니다. 가지고 있는 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다. 자세한 내용은 IDE 개인 설정참조하세요.
이 안내는 Visual Basic 개발 설정을 사용하여 작성되었습니다.
필수 조건
이 연습에서는 전용 폴더("c:\linqtest")를 사용하여 파일을 저장합니다. 연습을 시작하기 전에 이 폴더를 만듭니다.
이 연습을 수행하려면 Northwind 샘플 데이터베이스가 필요합니다. 개발 컴퓨터에 이 데이터베이스가 없는 경우 Microsoft 다운로드 사이트에서 다운로드할 수 있습니다. 지침은 샘플 데이터베이스 다운로드를 참조하세요. 데이터베이스를 다운로드한 후 c:\linqtest 폴더에 파일을 복사합니다.
개요
이 연습은 다음 6가지 주요 작업으로 구성됩니다.
Visual Studio에서 LINQ to SQL 솔루션 만들기
클래스를 데이터베이스 테이블에 매핑합니다.
데이터베이스 열을 나타내는 클래스의 속성을 지정합니다.
Northwind 데이터베이스에 대한 연결을 지정합니다.
데이터베이스에 대해 실행할 간단한 쿼리를 만듭니다.
쿼리를 실행하고 결과를 관찰합니다.
LINQ to SQL 솔루션 만들기
이 첫 번째 작업에서는 LINQ to SQL 프로젝트를 빌드하고 실행하는 데 필요한 참조가 포함된 Visual Studio 솔루션을 만듭니다.
LINQ to SQL 솔루션을 만들려면
파일 메뉴에서 새 프로젝트를 클릭합니다.
새 프로젝트 대화 상자의 프로젝트 형식 창에서 Visual Basic을 클릭합니다.
템플릿 창에서 콘솔 애플리케이션을 클릭합니다.
이름 상자에 LinqConsoleApp을 입력합니다.
OK를 클릭합니다.
LINQ 참조 및 지시문 추가
이 단계별 안내에서는 기본적으로 프로젝트에 설치되지 않을 수 있는 어셈블리를 사용합니다. 프로젝트에 참조로 나열되지 않은 경우System.Data.Linq
(솔루션 탐색기에서 모든 파일 표시를 클릭하고 참조 노드를 확장) 다음 단계에 설명된 대로 추가합니다.
System.Data.Linq를 추가하려면
솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭한 다음, 참조 추가를 클릭합니다.
참조 추가 대화 상자에서 .NET을 클릭하고 System.Data.Linq 어셈블리를 클릭한 다음 확인을 클릭합니다.
어셈블리가 프로젝트에 추가됩니다.
참조 추가 대화 상자에서 .NET을 클릭하고, System.Windows.Forms로 스크롤하여 클릭한 다음 확인 버튼을 클릭합니다.
연습에서 메시지 상자를 지원하는 이 어셈블리가 프로젝트에 추가됩니다.
위의
Module1
다음 지시문을 추가합니다.Imports System.Data.Linq Imports System.Data.Linq.Mapping Imports System.Windows.Forms
클래스를 데이터베이스 테이블에 매핑
이 단계에서는 클래스를 만들고 데이터베이스 테이블에 매핑합니다. 이러한 클래스를 엔터티 클래스라고 부합니다. 매핑은 단순히 TableAttribute 특성을 추가하여 수행됩니다. 이 속성은 Name 데이터베이스에 있는 테이블의 이름을 지정합니다.
엔터티 클래스를 만들고 데이터베이스 테이블에 매핑하려면
Module1.vb에 코드
Sub Main
바로 위에 다음 코드를 입력하거나 붙여넣으십시오.<Table(Name:="Customers")> _ Public Class Customer End Class
데이터베이스 열을 나타내는 클래스의 속성 지정
이 단계에서는 여러 작업을 수행합니다.
ColumnAttribute 속성을 사용하여 엔터티 클래스의
CustomerID
및City
속성을 데이터베이스 테이블의 열을 나타내도록 지정합니다.속성을 데이터베이스의
CustomerID
기본 키 열을 나타내는 것으로 지정합니다._CustomerID
및_City
필드를 사설 저장소로 지정합니다. 그런 다음 LINQ to SQL은 비즈니스 논리를 포함할 수 있는 공용 접근자를 사용하는 대신 값을 직접 저장하고 검색할 수 있습니다.
두 데이터베이스 열의 특성을 나타내려면
Module1.vb에 다음 코드를 입력하거나 붙여넣은 다음,
End Class
바로 전에 배치하세요.Private _CustomerID As String <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _ Public Property CustomerID() As String Get Return Me._CustomerID End Get Set(ByVal value As String) Me._CustomerID = value End Set End Property Private _City As String <Column(Storage:="_City")> _ Public Property City() As String Get Return Me._City End Get Set(ByVal value As String) Me._City = value End Set End Property
Northwind 데이터베이스에 대한 연결 지정
이 단계에서는 개체를 DataContext 사용하여 코드 기반 데이터 구조와 데이터베이스 자체 간에 연결을 설정합니다. 데이터베이스 DataContext 에서 개체를 검색하고 변경 내용을 제출하는 기본 채널입니다.
또한 데이터베이스의 Customers 테이블에 대한 쿼리를 위해 논리적이고 형식화된 테이블로 작용하도록 Table(Of Customer)
을 선언합니다. 이후 단계에서 이러한 쿼리를 만들고 실행합니다.
데이터베이스 연결을 지정하려면
다음 코드를 입력하거나 메서드에 붙여넣습니다
Sub Main
.northwnd.mdf
이 파일은 linqtest 폴더에 있는 것으로 간주됩니다. 자세한 내용은 이 연습의 앞부분에 있는 필수 구성 요소 섹션을 참조하세요.' Use a connection string. Dim db As New DataContext _ ("c:\linqtest\northwnd.mdf") ' Get a typed table to run queries. Dim Customers As Table(Of Customer) = _ db.GetTable(Of Customer)()
간단한 쿼리 만들기
이 단계에서는 데이터베이스 Customers 테이블에서 런던에 있는 고객을 찾는 쿼리를 만듭니다. 이 단계의 쿼리 코드는 쿼리에 대해 설명합니다. 실행하지 않습니다. 이 방법을 지연된 실행이라고 합니다. 자세한 내용은 LINQ 쿼리 소개(C#)를 참조하세요.
또한 LINQ to SQL에서 생성하는 SQL 명령을 표시하는 로그 출력을 생성합니다. 이 로깅 기능(사용 Log)은 디버깅 및 데이터베이스로 전송되는 명령이 쿼리를 정확하게 나타내는지 확인하는 데 유용합니다.
간단한 쿼리를 만들려면
선언
Sub Main
뒤에 있는 메서드에 다음 코드를 입력하거나 붙여넣으십시오Table(Of Customer)
.' Attach the log to show generated SQL in a console window. db.Log = Console.Out ' Query for customers in London. Dim custQuery = _ From cust In Customers _ Where cust.City = "London" _ Select cust
쿼리 실행
이 단계에서는 실제로 쿼리를 실행합니다. 이전 단계에서 만든 쿼리 식은 결과가 필요할 때까지 평가되지 않습니다. 반복을 For Each
시작하면 데이터베이스에 대해 SQL 명령이 실행되고 개체가 구체화됩니다.
쿼리를 실행하려면
메서드의 끝에
Sub Main
다음 코드를 입력하거나 붙여넣습니다(쿼리 설명 뒤).' Format the message box. Dim msg As String = "", title As String = "London customers:", _ response As MsgBoxResult, style As MsgBoxStyle = _ MsgBoxStyle.Information ' Execute the query. For Each custObj In custQuery msg &= String.Format(custObj.CustomerID & vbCrLf) Next ' Display the results. response = MsgBox(msg, style, title)
F5 키를 눌러 애플리케이션을 디버그합니다.
비고
애플리케이션에서 런타임 오류가 발생하면 연습을 통한 학습의 문제 해결 섹션을 참조하세요.
메시지 상자에는 6명의 고객 목록이 표시됩니다. 콘솔 창에 생성된 SQL 코드가 표시됩니다.
확인 을 클릭하여 메시지 상자를 해제합니다.
애플리케이션이 닫힙니다.
파일 메뉴에서 모두 저장을 클릭합니다.
다음 연습을 계속 진행하는 경우 이 애플리케이션이 필요합니다.
다음 단계
연습: 관계 간 쿼리(Visual Basic) 항목은 이 연습이 끝나는 위치에서 계속됩니다. 관계 간 쿼리 자습서에서는 LINQ to SQL이 여러 테이블 간을 관계형 데이터베이스의 조인과 유사하게 쿼리하는 방법을 설명합니다.
관계 간 쿼리 연습을 수행하려면 방금 완료한 연습에 대한 솔루션을 저장해야 합니다. 이는 필수 구성 요소입니다.