共用方式為


逐步解說:從 DBML 檔案產生 F# 型別 (F#)

當您將結構描述資訊的程式碼在 .dbml 檔案時, F# 的 3.0 逐步解說將說明如何建立資料型別從資料庫。 LINQ to SQL 使用這個檔案格式來表示資料庫結構描述。 您可以在 Visual Studio 中使用關聯的物件 (O/R 設計工具)去產生 LINQ to SQL 結構描述檔。 如需詳細資訊,請參閱O/R Designer OverviewCode Generation in LINQ to SQL

資料庫標記語言 (DBML) 型別的提供者可以讓您撰寫根據資料庫結構描述的型別,而不需要在編譯時期指定靜態連接字串的程式碼。 這樣很有用,如果您需要考慮的可能性是最終的應用程式可以使用不同的資料庫、不同的認證或不同的連接字串。 如果您可以在編譯時期直接資料庫連接,而這是您在建置應用程式的最終會使用,您也可以使用 SQLDataConnection 型別提供者的相同資料庫和驗證。 如需詳細資訊,請參閱逐步解說:使用型別提供者存取 SQL 資料庫 (F#)

這個逐步解說將說明下列工作: 在這個逐步解說的這個順序應該完成它們才會成功:

  • 建立 .dbml 檔案

  • 建立和設定 F# 專案

  • 設定型別提供者

  • 查詢資料庫

建立 .dbml 檔案

如果您不要測試的資料庫,請依照指示建立在 逐步解說:使用型別提供者存取 SQL 資料庫 (F#)底部。 如果您遵循這些指令,您將建立一個資料庫會包含一些簡單資料表和預存程序在 SQL Server 上 MyDatabase。

如果您已經有 .dbml 檔案,可以跳至區段中, 建立和設定 F# 專案。 否則,您可以使用命令列工具 SqlMetal.exe 建立 .dbml 檔案中重新命名現有 SQL 資料庫並。

您可以使用 SqlMetal.exe,建立 .dbml 檔案

  1. 開啟開發人員的命令提示字元

  2. 請確定您可以存取 SqlMetal.exe 在命令提示字元中的輸入 SqlMetal.exe /? 。 SqlMetal.exe 通常會安裝在 Microsoft Sdk ] 資料夾中的 Program Files程式檔案 (x86)

  3. 以下列命令列選項執行 SqlMetal.exe。 在 c:\destpath 位置替換一個適當的路徑中建立 .dbml 檔案,並插入資料庫執行個體名稱、伺服器和資料庫名稱的適當值。

    SqlMetal.exe /sprocs /dbml:C:\destpath\MyDatabase.dbml /server:SERVER\INSTANCE /database:MyDatabase
    
    注意事項注意事項

    如果 SqlMetal.exe 建立檔案時因為使用權限發生問題。,請變更目前的目錄複製到您擁有寫入權限的資料夾。

  4. 您也可以查看其他可用的命令列選項。 例如,您可以使用選項,如果您要檢視 SQL 函式中包含產生的型別。 如需詳細資訊,請參閱SqlMetal.exe (程式碼產生工具)

建立和設定 F# 專案

在這個步驟中,您會建立專案並加入適當的參考使用 DBML 型別的提供者。

建立並設定此專案

  1. 將新的 F# 主控台應用程式專案加入至方案。

  2. 在 [方案總管] 中按一下 [參考],然後在捷徑功能表中按一下 [加入參考]。

  3. 組件區中,選擇Framework端,在組件名單中選擇 System.DataSystem.Data.Linq 組件。

  4. 組件區中,選擇架構端子,在組件名單中選擇 FSharp.Data.TypeProviders組件。

  5. 選擇確定按鈕,將這些組件的參考加入至您的專案。

  6. (選擇性) 複製您在先前步驟中建立的 .dbml 檔案,並貼入您的專案的主要資料夾中。 這個資料夾包含專案檔 (.fsproj) 和程式碼檔。 在menu選單中,選擇[專案],[加入目前項目],然後指定 .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 型別使用不同的名稱來指定 DataContext=MyDataContext。 在這種情況下,程式碼類似下列範例:

    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#)

其他資源

型別提供者