Návod: Generování typů F# ze souboru DBML (F#)
Tento návod pro jazyk F# 3.0 popisuje, jak vytvořit typy pro data v databázi, jsou-li k dispozici informace o schématu kódované v souboru .dbml.Technologie LINQ to SQL používá tento formátu souborů pro reprezentaci schématu databáze.Soubory schémat technologie LINQ to SQL lze generovat v aplikaci Visual Studio použitím Objektově-relačního (O/R) návrháře.Další informace naleznete v tématu O/R Designer Overview a Code Generation in LINQ to SQL.
Poskytovatel typů Database Markup Language (DBML) umožňuje psát kód který používá typy založené na schématu databáze bez nutnosti zadávat statický připojovací řetězec v době překladu.To může být užitečné, je-li zapotřebí umožnit hotové aplikaci použít jinou databázi, jiné ověřovací údaje nebo jiný připojovací řetězec než ten použitý při vývoji aplikace.Používáte-li přímé připojení k databázi, které lze využít v době překladu, a použijete-li stejnou databázi a přihlašovací údaje v hotové aplikaci, lze také použít poskytovatel typů SQLDataConnection.Další informace naleznete v tématu Návod: Přístup k databázi SQL s použitím zprostředkovatelů typů (F#).
Tento návod ukazuje následující úkoly.Aby byl postup úspěšný, je zapotřebí kroky splnit v tomto pořadí:
Vytvoření souboru .dbml
Vytvoření a nastavení projektu jazyka F#
Konfigurace poskytovatele typů
Dotazování na databázi
Vytvoření souboru .dbml
Pokud není k dispozici databáze na testování, vytvořte ji dle instrukcí na konci dokumentu Návod: Přístup k databázi SQL s použitím zprostředkovatelů typů (F#).Budete-li tyto instrukce následovat, vytvoříte na serveru SQL Server databázi nazvanou MyDatabase, která obsahuje několik jednoduchých tabulek a uložených procedur.
Pokud je soubor .dbml již k dispozici, lze přejít na oddíl Vytvoření a nastavení projektu jazyka F#.Jinak lze vytvořit soubor .dbml z existující databáze SQL a použitím nástroje příkazového řádku SqlMetal.exe.
Vytvoření souboru .dbml pomocí nástroje SqlMetal.exe
Otevřete Příkazový řádek vývojáře.
Ujistěte, že máte přístup k nástroji SqlMetal.exe zadáním příkazu SqlMetal.exe /? v příkazovém řádku.Nástroj SqlMetal.exe je obvykle nainstalován v podsložce Microsoft SDKs složky Program Files nebo Program Files (x86).
Spusťte nástroj SqlMetal.exe s následujícími parametry příkazového řádku.Vytvořte soubor .dbml nahrazením cesty c:\destpath vhodnou cestou a vložte příslušné hodnoty databázového serveru, názvu instance a názvu databáze.
SqlMetal.exe /sprocs /dbml:C:\destpath\MyDatabase.dbml /server:SERVER\INSTANCE /database:MyDatabase
[!POZNÁMKA]
Má-li nástroj SqlMetal.exe potíže s vytvořením souborů z důvodu problémů s oprávněními, změňte aktuální adresář na složku, do které lze zapisovat.
Prohlédněte si také další dostupné parametry příkazového řádku.K dispozici jsou například parametry, které lze použít v případě, že chcete v generovaných typech zahrnutou zobrazení a funkce SQL.Další informace naleznete v tématu SqlMetal.exe (nástroj pro vytváření kódu).
Vytvoření a nastavení projektu jazyka F#
V tomto kroku vytvoříte projekt a přidáte příslušné odkazy pro použití poskytovatele typů DBML.
Vytvoření a nastavení projektu jazyka F#
Přidejte do řešení nový projekt Aplikace konzoly jazyka F#.
V Průzkumníkovi řešení otevřete místní nabídku pro Odkazy a zvolte Přidat odkaz.
V oblasti Sestavení zvolte uzel Rozhraní a poté v seznamu dostupných sestavení zvolte sestavení System.Data a System.Data.Linq.
V oblasti Sestavení zvolte možnost Rozšíření a poté ze seznamu dostupných sestavení vyberte FSharp.Data.TypeProviders.
Kliknutím na tlačítko OK přidáte do projektu odkazy na tato sestavení.
(Volitelné).Zkopírujte v předchozím kroku vytvořený soubor .dbml a vložte jej do hlavní složky projektu.Tato složka obsahuje soubor projektu (.fsproj) a soubory kódu.V řádku nabídek zvolte nabídky Projekt, Přidat existující položku a poté určete soubor .dbml, který bude přidán do projektu.Pokud provedete tyto kroky, lze v následujícím kroku vynechat statický parametr ResolutionFolder.
Konfigurace poskytovatele typů
V této části vytvoříte poskytovatele typů a vygenerujete typy ze schématu popsaného v souboru .dbml.
Konfigurace poskytovatele typů a generování typů
Přidejte kód, který otevře obor názvů TypeProviders a vytvoří instanci poskytovatele typů pro soubor .dbml, který chcete použít.Pokud je soubor .dbml přidán do projektu, lze vynechat statický parametr 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)
Typ DataContext poskytuje přístup ke všem vygenerovaným typům a dědí z třídy DataContext.Poskytovatel typů DbmlFile zahrnuje různé statické parametry, které lze nastavit.Pro typ DataContext lze například použít jiný název zadáním příkazu DataContext=MyDataContext.V takovém případě je kód podobný následujícímu příkladu:
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)
Dotazování na databázi
V tomto oddíle je využito dotazovacích výrazů jazyka F# pro dotazování na databázi.
Dotazování na data
Přidejte kód pro dotaz na databázi.
query { for row in db.Table1 do where (row.TestData1 > 2) select row } |> Seq.iter (fun row -> printfn "%d %s" row.TestData1 row.Name)
Další kroky
Lze přejít k využití jiných dotazovacích výrazů nebo zjistit připojení k databázi z kontextu dat a provádět běžné datové operace ADO.NET.Další kroky naleznete v částech následujících po "Dotazování na data" v tématu Návod: Přístup k databázi SQL s použitím zprostředkovatelů typů (F#).
Viz také
Úkoly
Návod: Přístup k databázi SQL s použitím zprostředkovatelů typů (F#)
Referenční dokumentace
DbmlFile – poskytovatel typů (F#)
SqlMetal.exe (nástroj pro vytváření kódu)