Freigeben über


Exemplarische Vorgehensweise: Generieren von F#-Typen aus einer DBML-Datei (F#)

Diese exemplarische Vorgehensweise für F# 3.0 beschreibt, wie Sie Typen für Daten aus einer Datenbank erstellen, wenn Sie über Schemainformationen in einer DBML-Datei verfügen.In LINQ to SQL wird dieses Dateiformat zum Darstellen des Datenbankschemas verwendet.Sie können in Visual Studio eine LINQ to SQL-Schemadatei mit dem Object Relational Designer (O/R-Designer) generieren.Weitere Informationen finden Sie unter O/R Designer Overview und Code Generation in LINQ to SQL.

Mithilfe des DBML-Typanbieters (Database Markup Language) können Sie Code schreiben, der auf einem Datenbankschema basierende Typen verwendet, ohne dass Sie zur Kompilierzeit eine statische Verbindungszeichenfolge angeben müssen.Das kann hilfreich sein, wenn Sie die Möglichkeit berücksichtigen müssen, dass die endgültige Anwendung eine andere Datenbank, andere Anmeldeinformationen oder eine andere Verbindungszeichenfolge verwendet, als Sie zum Entwickeln der Anwendung verwenden.Wenn Sie über eine direkte Datenbankverbindung verfügen, die Sie zur Kompilierungszeit verwenden können, und in der erstellten Anwendung dieselbe Datenbank und dieselben Anmeldeinformationen verwendet werden, können Sie auch den SQLDataConnection-Typanbieter verwenden.Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Zugreifen auf eine SQL-Datenbank mithilfe von Typanbietern (F#).

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben beschrieben.Sie sollten in dieser Reihenfolge ausgeführt werden, damit die exemplarische Vorgehensweise erfolgreich ausgeführt wird:

  • Creating a .dbml file

  • Creating and setting up an F# project

  • Configuring the type provider and generating the types

  • Querying the database

Erstellen einer DBML-Datei

Wenn Sie über keine Datenbank verfügen, mit der Sie die Verfahren testen können, erstellen Sie eine Datenbank, indem Sie die Anweisungen am Ende von Exemplarische Vorgehensweise: Zugreifen auf eine SQL-Datenbank mithilfe von Typanbietern (F#) befolgen.Wenn Sie diese Anweisungen befolgen, erstellen Sie eine Datenbank mit dem Namen MyDatabase, die einige einfache Tabellen und gespeicherte Prozeduren in SQL Server enthält.

Wenn Sie bereits über eine DBML-Datei verfügen, können Sie mit dem Abschnitt Create and Set Up an F# Project fortfahren.Andernfalls können Sie auf Grundlage einer vorhandenen SQL-Datenbank und mit dem Befehlszeilentool SqlMetal.exe eine DBML-Datei erstellen.

So erstellen Sie mit SqlMetal.exe eine DBML-Datei

  1. Öffnen Sie eine Developer-Eingabeaufforderung.

  2. Stellen Sie sicher, dass Sie Zugriff auf SqlMetal.exe haben, indem Sie an der Eingabeaufforderung SqlMetal.exe /? eingeben.SqlMetal.exe ist in der Regel in Programme oder Programme (x86) unter dem Ordner Microsoft SDKs installiert.

  3. Führen Sie SqlMetal.exe mit den folgenden Befehlszeilenoptionen aus.Ersetzen Sie c:\destpath durch einen entsprechenden Pfad, um die DBML-Datei zu erstellen, und fügen Sie entsprechende Werte für den Datenbankservernamen, den Instanznamen und den Datenbanknamen ein.

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

    Wenn SqlMetal.exe die Datei aufgrund von Berechtigungsproblemen nicht erstellen kann, verwenden Sie statt des aktuellen Verzeichnisses einen Ordner, für den Sie Schreibzugriff haben.

  4. Sie können auch die anderen verfügbaren Befehlszeilenoptionen betrachten.Beispielsweise gibt es Optionen, die Sie verwenden können, wenn die generierten Typen Sichten und SQL-Funktionen enthalten sollen.Weitere Informationen finden Sie unter SqlMetal.exe (Tool zur Codegenerierung).

Ein F#-Projekt erstellen und installieren

In diesem Schritt erstellen Sie ein Projekt und fügen die entsprechenden Verweise hinzu, um den DBML-Typanbieter zu verwenden.

So erstellen und richten Sie ein F#-Projekt ein

  1. Fügen Sie der Projektmappe ein neues F#-Konsolenanwendungsprojekt hinzu.

  2. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für Verweise, und wählen Sie Verweis hinzufügen aus.

  3. Wählen Sie im Bereich Assemblys den Knoten Framework. Dann wählen Sie System.Data und System.Data.Linq aus der Liste der verfügbaren Assemblys.

  4. Wählen Sie im Bereich Assemblys die Option Erweiterungen. Dann wählen Sie FSharp.Data.TypeProviders aus der Liste der verfügbaren Assemblys.

  5. Klicken Sie auf die Schaltfläche OK, um dem Projekt Verweise auf diese Assemblys hinzuzufügen.

  6. (Optional).Kopieren Sie die DBML-Datei, die Sie im vorherigen Schritt erstellt haben, und fügen Sie die Datei in den Hauptordner Ihres Projekts ein.Dieser Ordner enthält die Projektdatei (.fsproj) und Codedateien.Wählen Sie in der Menüleiste Projekt, dann Vorhandenes Element hinzufügen, und geben Sie anschließend die DBML-Datei an, um sie dem Projekt hinzuzufügen.Nach Beendigung dieses Schritts können Sie im nächsten Schritt den statischen Parameter ResolutionFolder weglassen.

Konfigurieren des Typanbieters

In diesem Abschnitt erstellen Sie einen Typanbieter und generieren Typen aus dem Schema, das in der DBML-Datei beschrieben wird.

So konfigurieren Sie den Typanbieter und generieren die Typen

  • Fügen Sie Code hinzu, um den TypeProviders-Namespace zu öffnen und den Typanbieter für die DBML-Datei zu instanziieren, die Sie verwenden möchten.Wenn Sie dem Projekt die DBML-Datei hinzugefügt haben, können Sie den statischen Parameter ResolutionFolder weglassen.

    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)
    

    Der DataContext-Typ bietet Zugriff auf alle generierten Typen und erbt von DataContext.Der DbmlFile-Typanbieter verfügt über verschiedene statische Parameter, die Sie festlegen können.Wenn Sie beispielsweise einen anderen Namen für den DataContext-Typ verwenden möchten, geben Sie DataContext=MyDataContext an.In diesem Fall lautet der Code wie folgt:

    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)
    

Abfragen der Datenbank

In diesem Abschnitt verwenden Sie F#-Abfrageausdrücke, um die Datenbank abzufragen.

So fragen Sie Daten ab

  • Fügen Sie Code zum Abfragen der Datenbank hinzu.

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

Nächste Schritte

Sie können anschließend weitere Abfrageausdrücke verwenden oder eine Datenbankverbindung aus dem Datenkontext abrufen und normale ADO.NET-Datenoperationen ausführen.Informationen zu weiteren Schritten finden Sie in den Abschnitten nach "Abfragen der Daten" in Exemplarische Vorgehensweise: Zugreifen auf eine SQL-Datenbank mithilfe von Typanbietern (F#).

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Zugreifen auf eine SQL-Datenbank mithilfe von Typanbietern (F#)

Referenz

DbmlFile-Typanbieter (F#)

SqlMetal.exe (Tool zur Codegenerierung)

Abfrageausdrücke (F#)

Weitere Ressourcen

Typanbieter