다음을 통해 공유


연습: 간단한 개체 모델 및 쿼리(Visual Basic)(LINQ to SQL)

업데이트: November 2007

이 연습에서는 간단한 기본 종단 간 LINQ to SQL 시나리오에 대해 설명합니다. 샘플 Northwind 데이터베이스의 Customers 테이블을 모델링하는 엔터티 클래스를 만듭니다. 그런 다음 단순 쿼리를 만들어 London에 있는 고객을 나열합니다.

이 연습은 LINQ to SQL 개념을 보여 주기 위한 코드를 중심으로 디자인되었습니다. 일반적으로 개체 관계형 디자이너를 사용하여 개체 모델을 만듭니다.

참고:

다음 지침처럼 컴퓨터에서 Visual Studio 사용자 인터페이스 요소 일부에 대한 이름이나 위치를 다르게 표시할 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio 설정을 참조하십시오.

이 연습은 Visual Basic 개발 설정을 사용하여 작성했습니다.

사전 요구 사항

  • 이 연습에서는 파일을 저장하기 위해 전용 폴더("c:\linqtest")가 사용됩니다. 연습을 시작하기 전에 먼저 이 폴더를 만듭니다.

  • 이 연습을 수행하려면 Northwind 샘플 데이터베이스가 있어야 합니다. 이 데이터베이스가 개발 컴퓨터에 없는 경우 Microsoft 다운로드 사이트에서 다운로드할 수 있습니다. 자세한 내용은 샘플 데이터베이스 다운로드(LINQ to SQL)를 참조하십시오. 이 데이터베이스를 다운로드한 후 파일을 c:\linqtest 폴더에 복사합니다.

개요

이 연습은 다음과 같은 여섯 가지 주요 작업으로 구성됩니다.

  • Visual Studio에서 LINQ to SQL 솔루션 만들기

  • 데이터베이스 테이블에 클래스 매핑

  • 데이터베이스 열을 나타내도록 클래스의 속성 지정

  • Northwind 데이터베이스에 대한 연결 지정

  • 데이터베이스에 대해 실행할 단순 쿼리 만들기

  • 쿼리 실행 및 결과 확인

비디오에 링크 비디오 데모를 보려면 Video How to: Simple Object Model and Query (Visual Basic) (LINQ to SQL)를 참조하십시오.

LINQ to SQL 솔루션 만들기

이 첫 번째 작업에서는 LINQ to SQL 프로젝트를 빌드하고 실행하는 데 필요한 참조가 들어 있는 Visual Studio 솔루션을 만듭니다.

LINQ to SQL 솔루션을 만들려면

  1. 파일 메뉴에서 새 프로젝트를 클릭합니다.

  2. 새 프로젝트 대화 상자의 프로젝트 형식 창에서 Visual Basic을 클릭합니다.

  3. 템플릿 창에서 콘솔 응용 프로그램을 클릭합니다.

  4. 이름 상자에 LinqConsoleApp를 입력합니다.

  5. 확인을 클릭합니다.

LINQ 참조 및 지시문 추가

이 연습에서는 프로젝트에 기본적으로 설치되어 있지 않을 수 있는 어셈블리를 사용합니다. System.Data.Linq가 프로젝트에 참조로 나열되지 않은 경우 솔루션 탐색기의 모든 파일 표시를 클릭하여 참조 노드를 확장하고 다음 단계에 설명된 대로 추가합니다.

System.Data.Linq를 추가하려면

  1. 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭한 다음 참조 추가를 클릭합니다.

  2. 참조 추가 대화 상자에서 .NET을 클릭하고 System.Data.Linq 어셈블리를 클릭한 다음 확인을 클릭합니다.

    어셈블리가 프로젝트에 추가됩니다.

  3. 또한 참조 추가 대화 상자에서 .NET을 클릭하고 System.Windows.Forms을 스크롤하여 클릭한 다음 확인을 클릭합니다.

    연습에서 메시지 상자를 지원하는 어셈블리가 프로젝트에 추가됩니다.

  4. Module1 위에 다음 지시문을 추가합니다.

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    Imports System.Windows.Forms
    

데이터베이스 테이블에 클래스 매핑

이 단계에서는 클래스를 생성하여 데이터베이스 테이블에 매핑합니다. 이러한 클래스를 엔터티 클래스라고 합니다. 매핑을 수행하려면 TableAttribute 특성을 추가하면 됩니다. Name 속성은 데이터베이스의 테이블 이름을 지정합니다.

엔터티 클래스를 만들어 데이터베이스 테이블에 매핑하려면

  • 다음 코드를 Sub Main 바로 위에 있는 Module1.vb에 입력하거나 붙여넣습니다.

    <Table(Name:="Customers")> _
    Public Class Customer
    End Class
    

데이터베이스 열을 나타내도록 클래스의 속성 지정

이 단계에서는 다음과 같은 몇 가지 작업을 수행합니다.

  • ColumnAttribute 특성을 사용하여 데이터베이스 테이블의 열을 나타내도록 엔터티 클래스의 CustomerID 및 City 속성을 지정합니다.

  • 데이터베이스의 기본 키 열을 나타내도록 CustomerID 속성을 지정합니다.

  • 전용 저장소에 _CustomerID 및 _City 필드를 지정합니다. 그러면 LINQ to SQL에서 비즈니스 논리가 포함된 공용 접근자를 사용하는 대신 값을 직접 저장하고 검색할 수 있습니다.

두 데이터베이스 열의 특징을 나타내려면

  • 다음 코드를 End Class 바로 앞의 Module1.vb에 입력하거나 붙여넣습니다.

    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는 데이터베이스에서 개체를 검색하고 변경 내용을 전송할 때 사용하는 기본 채널입니다.

또한 Table(Of Customer)이 데이터베이스의 Customers 테이블에 대한 쿼리에 대해 형식화된 논리적 테이블로 사용되도록 선언합니다. 이후 단계에서 이러한 쿼리를 만들고 실행합니다.

데이터베이스 연결을 지정하려면

  • 다음 코드를 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 테이블에서 London에 있는 고객을 찾는 쿼리를 만듭니다. 이 단계의 쿼리 코드는 쿼리를 설명하기만 하고 실행하지는 않습니다. 이러한 방법을 지연된 실행이라고 합니다. 자세한 내용은 LINQ 쿼리 소개을 참조하십시오.

또한 LINQ to SQL에서 생성하는 SQL 명령을 보여 주는 로그 출력을 만듭니다. Log를 사용하는 이 로깅 기능은 디버깅할 때와 데이터베이스로 전송되는 명령이 쿼리를 정확히 나타내는지 확인할 때 유용합니다.

단순 쿼리를 만들려면

  • 다음 코드를 Table(Of Customer) 선언 뒤의 Sub Main 메서드에 입력하거나 붙여넣습니다.

    ' 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 명령이 실행되고 개체가 구체화됩니다.

쿼리를 실행하려면

  1. 다음 코드를 쿼리 설명 뒤 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)
    
  2. F5 키를 눌러 응용 프로그램을 디버깅합니다.

    참고:

    응용 프로그램에서 런타임 오류가 발생하면 연습을 통한 학습(LINQ to SQL)의 문제 해결 단원을 참조하십시오.

    메시지 상자에 여섯 명의 고객이 나열됩니다. 콘솔 창에 생성된 SQL 코드가 표시됩니다.

  3. 확인을 클릭하여 메시지 상자를 닫습니다.

    응용 프로그램을 닫습니다.

  4. 파일 메뉴에서 모두 저장을 클릭합니다.

    다음 연습을 계속하려면 이 응용 프로그램이 필요합니다.

다음 단계

연습: 관계 간 쿼리(Visual Basic)(LINQ to SQL) 항목은 이 연습이 종료될 때 계속됩니다. 관계 간 쿼리 연습에서는 LINQ to SQL가 관계형 데이터베이스의 조인과 유사하게 테이블을 쿼리하는 방법을 보여 줍니다.

관계 간 쿼리 연습을 수행하려면 지금까지 완료한 연습에 대한 솔루션을 저장해야 합니다.

참고 항목

개념

연습을 통한 학습(LINQ to SQL)