연습: DBML 파일에서 F# 형식 생성(F#)
F# 3.0에 대한 이 연습에서는 .dbml 파일에 인코딩된 스키마 정보가 있을 때 데이터베이스에서 데이터 형식을 만드는 방법에 대해 설명합니다.LINQ to SQL에서 이 파일 형식을 사용하여 데이터베이스 스키마를 나타냅니다.개체 관계형(O/R) 디자이너를 사용하여 Visual Studio에서 LINQ to SQL 스키마 파일을 생성할 수 있습니다.자세한 내용은 O/R Designer Overview 및 Code 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 파일을 만드는 방법
개발자 명령 프롬프트를 엽니다.
명령 프롬프트에서 SqlMetal.exe /?를 입력하여 SqlMetal.exe에 대한 액세스 권한이 있는지 확인합니다.SqlMetal.exe는 일반적으로 프로그램 파일 또는 **프로그램 파일(x86)**의 Microsoft SDK 폴더에 설치되어 있습니다.
다음 명령줄 옵션을 사용하여 SqlMetal.exe를 실행합니다..dbml 파일을 만들기 위해 c:\destpath의 자리에 적절한 경로를 대체하고 데이터베이스 서버, 인스턴스 이름 및 데이터베이스 이름의 해당 값을 삽입합니다.
SqlMetal.exe /sprocs /dbml:C:\destpath\MyDatabase.dbml /server:SERVER\INSTANCE /database:MyDatabase
[!참고]
권한 문제로 인해 SqlMetal.exe에서 파일을 만드는 데 문제가 있는 경우 현재 디렉터리를 쓰기 액세스 권한이 있는 폴더로 변경합니다.
다른 사용 가능한 명령줄 옵션을 찾아볼 수도 있습니다.예를 들어, 뷰 및 SQL 함수를 생성된 형식에 포함시키려는 경우 사용할 수 있는 옵션이 있습니다.자세한 내용은 SqlMetal.exe(코드 생성 도구)을 참조하십시오.
F# 프로젝트 만들기 및 설정
이 단계에서 DBML 형식 공급자를 사용하려면 프로젝트를 만들고 적절한 참조를 추가합니다.
F# 프로젝트를 만들고 설정하는 방법
새 F# 콘솔 응용 프로그램 프로젝트를 솔루션에 추가합니다.
솔루션 탐색기에서 참조의 바로 가기 메뉴를 열고 참조 추가를 선택합니다.
어셈블리 영역에서 프레임워크 노드를 선택하고 사용할 수 있는 어셈블리 목록에서 System.Data 및 System.Data.Linq 어셈블리를 선택합니다.
어셈블리 영역에서 확장을 선택하고 사용 가능한 어셈블리 목록에서 FSharp.Data.TypeProviders를 선택합니다.
확인 단추를 선택하여 프로젝트에 이 어셈블리에 대한 참조를 추가합니다.
(선택 사항)이전 단계에서 만든 .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#)