Procedura dettagliata: generazione di tipi F# da un file DBML (F#)

Questa procedura dettagliata per F# 3,0 viene illustrato come creare tipi di dati da un database quando si eseguono le informazioni dello schema di codifica in un file .dbml.LINQ to SQL utilizza questo formato di file per rappresentare lo schema di database.È possibile generare un file di schema LINQ to SQL in Visual Studio utilizzando l'oggetto relazionale (O/R) finestra di progettazione.Per ulteriori informazioni, vedere O/R Designer Overview e Code Generation in LINQ to SQL.

Il provider del linguaggio markup del database (DBML) consente di scrivere codice che tipi di utilizzare basati su uno schema di database senza la necessità di specificare una stringa di connessione statica in fase di compilazione.Ciò può essere utile se è necessario consentire la possibilità che l'applicazione finale utilizza un database diverso, le credenziali diverse, o una stringa di connessione diversa da quella si utilizza per compilare l'applicazione.Se si dispone di una connessione di database che costituiscono che è possibile utilizzare in fase di compilazione e si tratta dello stesso database e credenziali che verrà utilizzato nell'applicazione generata un'eccezione, è anche possibile utilizzare il provider del tipo di SQLDataConnection.Per ulteriori informazioni, vedere Procedura dettagliata: accesso a un database SQL tramite provider di tipi (F#).

In questa procedura dettagliata vengono illustrate le seguenti attività.Devono essere completati in quest'ordine per la procedura dettagliata corretta:

  • Creating a .dbml file

  • Creating and setting up an F# project

  • Configuring the type provider and generating the types

  • Querying the database

Creare un file con estensione dbml

Se non si dispone di un database da testare su, crearne una seguendo le istruzioni nella parte inferiore Procedura dettagliata: accesso a un database SQL tramite provider di tipi (F#).Seguendo queste istruzioni, verrà creato un database denominato MyDatabase che contiene alcune tabelle semplici e stored procedure di SQL Server.

Se è già presente un file dbml, è possibile ignorare la sezione, Create and Set Up an F# Project.In caso contrario, è possibile creare un file con estensione dbml fornito un database SQL esistente e tramite lo strumento da riga di comando SqlMetal.exe.

Per creare un file dbml utilizzando SqlMetal.exe

  1. Aprire Prompt dei comandi di sviluppo.

  2. Verificare di avere accesso a SqlMetal.exe immettendo in SqlMetal.exe /? al prompt dei comandi.SqlMetal.exe viene in genere installato nella cartella Microsoft sdks in file di programma o in Programmi (x86).

  3. Esecuzione SqlMetal.exe con le seguenti opzioni della riga di comando.Sostituire un percorso appropriato anziché c:\destpath per creare il file dbml e i valori appropriati di inserimento per il server database, il nome dell'istanza e il nome del database.

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

    [!NOTA]

    Se SqlMetal.exe problema che ha creato il file a causa dei problemi di autorizzazioni, modificare la directory corrente a una cartella che dispone di accesso in scrittura a.

  4. È inoltre possibile esaminare le altre opzioni della riga di comando disponibili.Ad esempio, esistono opzioni che è possibile utilizzare se si desidera che le visualizzazioni e funzioni SQL incluse nei tipi generati.Per ulteriori informazioni, vedere SqlMetal.exe (strumento per la generazione del codice).

Creazione e configurazione di un progetto F#

In questo passaggio, creare un progetto e aggiungere i riferimenti appropriati per utilizzare il provider del tipo di DBML.

Per creare e configurare un progetto F#

  1. Aggiungere un nuovo progetto di applicazione console di F# alla soluzione.

  2. In Esplora soluzioni, aprire il menu di scelta rapida per Riferimentiquindi scegliere Aggiungi riferimento.

  3. Nell'area Assembly, selezionare il nodo Framework quindi, nell'elenco di assembly disponibili, selezionare gli assembly System.Data.Linq e System.Data.

  4. Nell'area Assembly, scegliere estensioniquindi, nell'elenco di assembly disponibili, scegliere FSharp.Data.TypeProviders.

  5. Scegliere il pulsante OK per aggiungere riferimenti ai seguenti assembly per il progetto.

  6. (Facoltativo)Copiare il file dbml creato nel passaggio precedente e incollare il file nella cartella principale del progetto.Questa cartella contiene il file di progetto (.fsproj) e i file di codice.Sulla barra dei menu, scegliere Progetto, Aggiungere l'elemento esistentequindi specificare il file dbml per aggiungerlo al progetto.Completando queste operazioni, è possibile omettere il parametro statico di ResolutionFolder il passaggio successivo.

Configurazione del provider del tipo

In questa sezione, si crea un provider di tipo e generano i tipi dello schema che viene descritto nel file .dbml.

Per configurare il provider del tipo e generare i tipi

  • Aggiungere il codice che apre lo spazio dei nomi TypeProviders e creare un'istanza del provider del tipo per il file dbml che si desidera utilizzare.Se è stato aggiunto il file dbml al progetto, è possibile omettere il parametro statico di 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)
    

    Il tipo di DataContext fornisce l'accesso a tutti i tipi generati ed eredita da DataContext.Il provider del tipo di DbmlFile ha vari parametri statici che è possibile impostare.Ad esempio, utilizzare un nome diverso per il tipo di DataContext specificando DataContext=MyDataContext.In tal caso, il codice sarà simile al seguente:

    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)
    

Eseguire una query sul database

In questa sezione, si utilizzano espressioni di query F# per eseguire una query sul database.

Per eseguire una query sui dati

  • Aggiungere il codice per eseguire una query sul database.

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

Passaggi successivi

È possibile continuare a utilizzare altre espressioni di query, o ottenere una connessione di database dal contesto dati ed eseguire operazioni sui dati normali ADO.NET.Per ulteriori passaggi, vedere le sezioni dopo “query i dati„ in Procedura dettagliata: accesso a un database SQL tramite provider di tipi (F#).

Vedere anche

Attività

Procedura dettagliata: accesso a un database SQL tramite provider di tipi (F#)

Riferimenti

Provider di tipo DbmlFile (F#)

SqlMetal.exe (strumento per la generazione del codice)

Espressioni di query (F#)

Altre risorse

Provider di tipi