Udostępnij za pośrednictwem


Wskazówki: generowanie typów F# za pomocą pliku DBML (F#)

W tym instruktażu przeznaczonym dla wersji 3.0 języka F# opisano tworzenie typów z danych pobranych z bazy danych, w przypadku posiadania informacji o schemacie zakodowanych w pliku .dbml.LINQ SQL używa tego formatu pliku do reprezentowania schematu bazy danych.Przy użyciu projektanta obiektowo-relacyjnego (O/R) można wygenerować plik schematu LINQ to SQL w programie Visual Studio.Aby uzyskać więcej informacji, zobacz O/R Designer Overview i Code Generation in LINQ to SQL.

Dostawca typu bazy danych Markup Language (DBML) umożliwia pisanie kodu korzystającego z typów opartych na schemacie bazy danych bez konieczności statycznego określania parametrów połączenia w czasie kompilacji.Może być to użyteczne w przypadku potrzeby dopuszczenia możliwości użycia przez ostateczną aplikację innej bazy danych, poświadczeń lub parametrów połączenia niż te, które były używane podczas tworzenia aplikacji.Jeśli posiadasz bezpośrednie połączenie z bazą danych w czasie kompilacji, i będzie to ta sama baza danych i poświadczenia, które będą użyte do skompilowania końcowej aplikacji, możesz użyć dostawcy typu SQLDataConnection.Aby uzyskać więcej informacji, zobacz Wskazówki: uzyskiwanie dostępu do bazy danych SQL za pomocą dostawców typów (F#).

Ten przewodnik pokazuje następujące zadania:Powinny one być wypełnione w następującej kolejności, aby instruktaż zakończył się powodzeniem:

  • Tworzenie pliku .dbml

  • Tworzenie i konfigurowanie projektu F#

  • Konfigurowanie dostawcy typów

  • Wykonywanie zapytania na bazie danych

Tworzenie pliku .dbml

Jeśli nie masz bazy danych do testowania, utwórz ją wykonując instrukcje znajdujące się na dole Wskazówki: uzyskiwanie dostępu do bazy danych SQL za pomocą dostawców typów (F#).Jeśli wypełnisz te instrukcje, stworzysz bazę danych nazwaną MyDatabase, która zawiera kilka prostych tabel i przechowywanych procedur na serwerze SQL Server.

Jeśli masz już plik .dbml, możesz przejść do sekcji Tworzenie i konfigurowanie projektu F#.W przeciwnym wypadku można utworzyć pliku .dbml z istniejącej bazy danych SQL przy użyciu narzędzia wiersza poleceń SqlMetal.exe.

Aby utworzyć plik .dbml za pomocą SqlMetal.exe

  1. Otwórz Wiersz poleceń dewelopera.

  2. Upewnij się, że masz dostęp do SqlMetal.exe poprzez wpisanie SqlMetal.exe /? w wierszu polecenia.SqlMetal.exe jest zazwyczaj zainstalowane w folderze Microsoft SDK w Pliki programów lub Pliki programów (x 86).

  3. Uruchom SqlMetal.exe z następującymi opcjami wiersza polecenia.Zamień ścieżkę c:\destpath na poprawną w celu stworzenia pliku .dbml, a następnie wpisz poprawne wartości dla serwera bazy danych, nazwy wystąpienia i nazwy bazy danych.

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

    [!UWAGA]

    Jeśli SqlMetal.exe ma problemy z tworzeniem pliku związane z uprawnieniami, należy zmienić bieżący katalog na folder, do którego ma prawo zapisu.

  4. Można również przejrzeć inne dostępne opcje wiersza polecenia.Na przykład są opcje, których można użyć, w celu dołączenia do wygenerowanych typów widoków i funkcji SQL.Aby uzyskać więcej informacji, zobacz SqlMetal.exe (Narzędzie generowania kodu).

Tworzenie i konfigurowanie projektu F#

W tym kroku utworzysz projekt i dodasz odpowiednie odwołania w celu możliwości użycia dostawcy typu DBML.

Aby utworzyć i skonfigurować projekt F#

  1. Dodaj nowy projekt aplikacji konsolowej F# do rozwiązania.

  2. W oknie Eksploratora rozwiązań otwórz menu skrótów Odwołania, a następnie wybierz polecenie Dodaj odwołanie.

  3. W obszarze Zestawy wybierz węzeł Środowisko, a następnie z listy dostępnych zestawów wybierz System.Data i System.Data.Linq.

  4. W obszarze Zestawy wybierz Rozszerzenia, a następnie z listy dostępnych zestawów wybierz FSharp.Data.TypeProviders.

  5. Kliknij przycisk OK, aby dodać odwołania do tych zestawów do projektu.

  6. OpcjonalneSkopiuj utworzony w poprzednim kroku plik .dbml i wklej go do folderu głównego projektu.Folder ten zawiera plik projektu (.fsproj) i pliki kodu.Z paska menu wybierz Projektu, Dodaj istniejący element, a następnie określ plik .dbml do dodania do projektu.Po wykonaniu tych czynności można pominąć statyczny parametr ResolutionFolder z następnego kroku.

Konfigurowanie dostawcy typów

W tej sekcji utworzysz dostawcę typów i wygenerujesz typy ze schematu, który jest opisany w pliku .dbml.

Aby skonfigurować dostawcę typów i wygenerować typy

  • Dodaj kod, który otwiera przestrzeń nazw TypeProviders i tworzy wystąpienie dostawcy typów dla pliku .dbml, którego chcemy użyć.Jeśli plik .dbml jest dodany do projektu, można pominąć statyczny 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 zapewnia dostęp do wszystkich wygenerowanych typów i dziedziczy po DataContext.Dostawca typu DbmlFile ma posiada różne statyczne parametry, które można ustawić.Na przykład można użyć innej nazwy dla typu DataContext, określając DataContext=MyDataContext.W takim przypadku kod będzie podobny do poniższego:

    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)
    

Wykonywanie zapytania na bazie danych

W tej sekcji użyjesz zapytania F# do wysłania zapytania do bazy danych.

Aby utworzyć zapytanie do danych

  • Dodaj kod w celu wysłania zapytania do bazy danych.

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

Następne kroki

Można przejść do innego zapytania lub uzyskać połączenie z bazą danych z kontekstu danych i wykonywania normalnych operacji danych ADO.NET.W celu zobaczenia dodatkowych kroków, zobacz sekcje po "Wysyłanie zapytań do danych" w Wskazówki: uzyskiwanie dostępu do bazy danych SQL za pomocą dostawców typów (F#).

Zobacz też

Zadania

Wskazówki: uzyskiwanie dostępu do bazy danych SQL za pomocą dostawców typów (F#)

Informacje

DbmlFile — Typ dostawcy (F#)

SqlMetal.exe (Narzędzie generowania kodu)

Wyrażenia kwerend (F#)

Inne zasoby

Dostawcy typów