연습: DBML 파일에서 F# 형식 생성(F#)

F# 3.0에 대한 이 연습에서는 .dbml 파일에 인코딩된 스키마 정보가 있을 때 데이터베이스에서 데이터 형식을 만드는 방법에 대해 설명합니다.LINQ to SQL에서 이 파일 형식을 사용하여 데이터베이스 스키마를 나타냅니다.개체 관계형(O/R) 디자이너를 사용하여 Visual Studio에서 LINQ to SQL 스키마 파일을 생성할 수 있습니다.자세한 내용은 O/R Designer OverviewCode Generation in LINQ to SQL를 참조하십시오.

데이터베이스 태그 언어(DBML) 형식 공급자를 사용하면 컴파일 타임에 정적 연결 문자열을 지정할 필요 없이 데이터베이스 스키마를 기반으로 하는 형식을 사용하는 코드를 작성할 수 있습니다.최종 응용 프로그램이 응용 프로그램을 개발하는 데 사용하는 것과 다른 데이터베이스, 다른 자격 증명 또는 다른 연결 문자열을 사용할 가능성을 허용해야 하는 경우 유용할 수 있습니다.컴파일 타임에 사용할 수 있는 직접 데이터베이스 연결이 있고 빌드한 응용 프로그램에 결국 사용할 데이터베이스 및 자격 증명과 동일한 경우 SQLDataConnection 형식 공급자를 사용할 수도 있습니다.자세한 내용은 연습: 형식 공급자를 사용하여 SQL 데이터베이스에 액세스(F#)을 참조하십시오.

이 연습에서는 다음 작업을 수행합니다.이 연습을 완료하려면 이 순서대로 수행해야 합니다.

  • Creating a .dbml file

  • Creating and setting up an F# project

  • Configuring the type provider and generating the types

  • Querying the database

.dbml 파일 만들기

테스트할 데이터베이스가 없는 경우 연습: 형식 공급자를 사용하여 SQL 데이터베이스에 액세스(F#) 아래에서 명령을 수행하여 데이터베이스를 만듭니다.이러한 지침을 따르는 경우 몇 가지 SQL Server에 간단한 테이블과 저장 프로시저가 포함된 MyDatabase라고 하는 데이터베이스를 만듭니다.

이미 .dbml 파일이 있는 경우 Create and Set Up an F# Project 섹션으로 건너뛸 수 있습니다.그렇지 않으면 기존 SQL 데이터베이스가 지정되고 명령줄 도구 SqlMetal.exe를 사용하여 .dbml 파일을 만들 수 있습니다.

SqlMetal.exe를 사용하여 .dbml 파일을 만드는 방법

  1. 개발자 명령 프롬프트를 엽니다.

  2. 명령 프롬프트에서 SqlMetal.exe /?를 입력하여 SqlMetal.exe에 대한 액세스 권한이 있는지 확인합니다.SqlMetal.exe는 일반적으로 프로그램 파일 또는 **프로그램 파일(x86)**의 Microsoft SDK 폴더에 설치되어 있습니다.

  3. 다음 명령줄 옵션을 사용하여 SqlMetal.exe를 실행합니다..dbml 파일을 만들기 위해 c:\destpath의 자리에 적절한 경로를 대체하고 데이터베이스 서버, 인스턴스 이름 및 데이터베이스 이름의 해당 값을 삽입합니다.

    SqlMetal.exe /sprocs /dbml:C:\destpath\MyDatabase.dbml /server:SERVER\INSTANCE /database:MyDatabase
    

    [!참고]

    권한 문제로 인해 SqlMetal.exe에서 파일을 만드는 데 문제가 있는 경우 현재 디렉터리를 쓰기 액세스 권한이 있는 폴더로 변경합니다.

  4. 다른 사용 가능한 명령줄 옵션을 찾아볼 수도 있습니다.예를 들어, 뷰 및 SQL 함수를 생성된 형식에 포함시키려는 경우 사용할 수 있는 옵션이 있습니다.자세한 내용은 SqlMetal.exe(코드 생성 도구)을 참조하십시오.

F# 프로젝트 만들기 및 설정

이 단계에서 DBML 형식 공급자를 사용하려면 프로젝트를 만들고 적절한 참조를 추가합니다.

F# 프로젝트를 만들고 설정하는 방법

  1. 새 F# 콘솔 응용 프로그램 프로젝트를 솔루션에 추가합니다.

  2. 솔루션 탐색기에서 참조의 바로 가기 메뉴를 열고 참조 추가를 선택합니다.

  3. 어셈블리 영역에서 프레임워크 노드를 선택하고 사용할 수 있는 어셈블리 목록에서 System.DataSystem.Data.Linq 어셈블리를 선택합니다.

  4. 어셈블리 영역에서 확장을 선택하고 사용 가능한 어셈블리 목록에서 FSharp.Data.TypeProviders를 선택합니다.

  5. 확인 단추를 선택하여 프로젝트에 이 어셈블리에 대한 참조를 추가합니다.

  6. (선택 사항)이전 단계에서 만든 .dbml 파일을 복사하고 프로젝트의 주 폴더에 파일을 붙여 넣습니다.이 폴더에는 프로젝트 파일(.fsproj) 및 코드 파일이 포함되어 있습니다.메뉴 모음에서 프로젝트, 기존 항목 추가를 선택한 후 .dbml 파일을 지정하여 프로젝트에 추가합니다.이 단계를 완료하면 다음 단계에서 ResolutionFolder 정적 매개 변수를 생략할 수 있습니다.

형식 공급자를 구성

이 섹션에서는 형식 공급자를 만들고 .dbml 파일에 설명되어 있는 스키마에서 형식을 생성합니다.

형식 공급자를 구성하고 형식을 생성하는 방법

  • TypeProviders 네임스페이스를 열고 사용하고자 하는 .dbml 파일에 대한 형식 공급자를 인스턴스화하는 코드를 추가합니다..dbml 파일을 프로젝트에 추가한 경우 ResolutionFolder 정적 매개 변수를 생략할 수 있습니다.

    open Microsoft.FSharp.Data.TypeProviders
    
    
    type dbml = DbmlFile<"MyDatabase.dbml", ResolutionFolder = @"<path to folder that contains .dbml file>>
    
    // This connection string can be specified at run time.
    let connectionString = "Data Source=MYSERVER\INSTANCE;Initial Catalog=MyDatabase;Integrated Security=SSPI;"
    let dataContext = new dbml.Mydatabase(connectionString)
    

    DataContext 형식은 DataContext에서 생성되고 상속된 모든 형식에 대한 액세스 권한을 제공하는 형식입니다.DbmlFile 형식 공급자에는 설정할 수 있는 다양한 정적 매개 변수가 있습니다.예를 들어, DataContext=MyDataContext를 지정해 DataContext 형식의 다른 이름을 사용할 수 있습니다.이 경우 코드는 다음 예제와 유사합니다.

    open Microsoft.FSharp.Data.TypeProviders
    
    
    
    type dbml = DbmlFile<"MyDatabase.dbml",
                         ContextTypeName = "MyDataContext">
    
    // This connection string can be specified at run time.
    let connectionString = "Data Source=MYSERVER\INSTANCE;Initial Catalog=MyDatabase;Integrated Security=SSPI;"
    let db = new dbml.MyDataContext(connectionString)
    

데이터베이스를 쿼리하고 있습니다.

이 단원에서는 F# 쿼리 식을 사용하여 데이터베이스를 쿼리합니다.

데이터에 쿼리하는 방법

  • 데이터베이스를 쿼리하는 코드를 추가합니다.

    query {
            for row in db.Table1 do
            where (row.TestData1 > 2)
            select row
    }
    |> Seq.iter (fun row -> printfn "%d %s" row.TestData1 row.Name)
    

다음 단계

다른 쿼리 식을 사용하거나 데이터 컨텍스트에서 데이터베이스 연결을 가져와서 일반 ADO.NET 데이터 작업을 수행할 수 있습니다.추가 단계는 연습: 형식 공급자를 사용하여 SQL 데이터베이스에 액세스(F#)의 "데이터 쿼리" 다음의 섹션을 참조하십시오.

참고 항목

작업

연습: 형식 공급자를 사용하여 SQL 데이터베이스에 액세스(F#)

참조

DbmlFile 형식 공급자(F#)

SqlMetal.exe(코드 생성 도구)

쿼리 식(F#)

기타 리소스

형식 공급자