Procédure pas à pas : génération de types F# à partir d'un fichier DBML (F#)
Cette procédure pas - à - pas pour F# 3,0 décrit comment créer des types pour les données d'une base de données lorsque vous avez des informations de schéma encodées dans un fichier .dbml. LINQ to SQL utilise ce format de fichier pour représenter le schéma de base de données. Vous pouvez générer un fichier de schéma LINQ to SQL dans Visual Studio à l'aide du designer Object Relational (O/R). Pour plus d'informations, consultez Vue d'ensemble du Concepteur O/R et Génération de code dans LINQ to SQL.
Le fournisseur de type du langage de balisage de base de données (DBML) vous permet d'écrire du code qui utilise des types basés sur un schéma de base de données sans requérir que vous spécifiiez une chaîne de connexion statique au moment de la compilation. Il peut être utile si vous devez tenir compte de la possibilité que l'application finale utilise une autre base de données, différentes informations d'identification, ou une chaîne de connexion différente de celle que vous utilisez pour développer l'application. Si vous avez une connexion de base de données directe que vous pouvez utiliser au moment de la compilation et que ce sont la même base de données et informations d'identification que vous utiliserez par la suite dans votre application créée, vous pouvez également utiliser le fournisseur de type de SQLDataConnection. Pour plus d'informations, consultez Procédure pas à pas : accès à une base de données SQL à l'aide des fournisseurs de type (F#).
Cette procédure pas à pas décrit les tâches suivantes : Elles doivent être exécutées dans cette ordre pour que la procédure pas - à - pas réussisse :
Création d'un fichier .dbml
Création et l'installation d'un projet F#
Configurer le fournisseur de type
Interrogation de la base de données
Création d'un fichier .dbml
Si vous ne disposez pas d'une base de données pour tester, créez en une en suivant les instructions en bas de Procédure pas à pas : accès à une base de données SQL à l'aide des fournisseurs de type (F#). Si vous suivez les instructions, vous allez créer une base de données appelée MyDatabase qui contient des tables simples et des procédures stockées sur votre SQL Server.
Si vous avez déjà un fichier .dbml, vous pouvez passer à la section, Création et l'installation d'un projet F#. Sinon, vous pouvez créer un fichier .dbml à partir d'une base de données SQL existante et à l'aide de l'outil en ligne de commande SqlMetal.exe.
Pour créer un fichier .dbml en utilisant SqlMetal.exe
Ouvrez une fenêtre Invite de commandes Développeur.
Assurez -vous que vous avez accès à SqlMetal.exe en entrant SqlMetal.exe /? à l'invite de commandes. SqlMetal.exe est généralement installé dans le dossier Microsoft SDK dans Programme Files ou Programme Files (x86).
Exécutez SqlMetal.exe avec les options de ligne de commande suivantes. Remplacez un chemin d'accès approprié à la place de c:\destpath pour créer le fichier .dbml, puis insérez les valeurs appropriées pour le serveur de base de données, le nom de l'instance, et le nom de la base de données.
SqlMetal.exe /sprocs /dbml:C:\destpath\MyDatabase.dbml /server:SERVER\INSTANCE /database:MyDatabase
Notes
Si SqlMetal.exe a des problèmes à la création du fichier en raison de problèmes de permissions, modifiez le répertoire actif par celui sur lequel vous avez un accès en écriture.
Vous pouvez également consulter les autres options de ligne de commande disponibles. Par exemple, des options que vous pouvez utiliser si vous souhaitez que les vues et les fonctions SQL soient incorporés dans les types générés. Pour plus d'informations, consultez SqlMetal.exe (outil de génération de code).
Création et l'installation d'un projet F#
Dans cette étape, vous créez un projet et lui ajouter les références appropriées pour utiliser le fournisseur de type DBML.
Pour créer et paramétrer le projet F#
Ajoutez un nouveau projet d'application console F# à votre solution.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur Références, puis sélectionnez Ajouter une référence dans le menu contextuel.
Dans la zone Assemblies , sélectionnez le nœud framework , puis, dans la liste d'assemblies disponibles, sélectionnez les assemblies System.Data et System.Data.Linq .
Dans la zone Assemblies , choisissez Extensions, puis, dans la liste d'assemblies disponibles, choisissez FSharp.Data.TypeProviders.
Choisissez le bouton OK pour ajouter des références aux assemblys suivants à votre projet.
(Facultatif). Copiez le fichier .dbml que vous avez créé à l'étape précédente, puis collez le fichier dans le répertoire principal de votre projet. Ce dossier contient les fichiers de projet (.fsproj) et de code. Dans la barre de menus, sélectionnez Projet, Ajouter un élément existant, puis spécifiez le fichier .dbml pour l'ajouter à votre projet. Si vous effectuez ces étapes, vous pouvez omettre le paramètre statique de ResolutionFolder dans l'étape suivante.
Configurer le fournisseur de type
Dans cette section, vous créez un fournisseur de type et générez des types à partir du schéma qui est décrit dans le fichier .dbml.
Pour configurer le fournisseur de type et générer des types
Ajoutez le code qui ouvre l'espace de noms TypeProviders et instanciez le fournisseur de type pour le fichier .dbml que vous souhaitez utiliser. Si vous avez ajouté le fichier .dbml à votre projet, vous pouvez omettre le paramètre statique 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)
Le type du DataContext fournit l'accès à tous les types générés et hérite de DataContext. Le fournisseur de type DbmlFile présente les différents paramètres statiques que vous pouvez définir. Par exemple, vous pouvez utiliser un nom différent pour le type de DataContext en spécifiant DataContext=MyDataContext. Dans ce cas, votre code ressemble à l'exemple suivant :
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)
Interrogation de la base de données
Dans cette partie, vous utilisez des expressions de requête F# pour interroger la base de données.
Pour interroger les données
Ajoutez le code pour interroger la base de données.
query { for row in db.Table1 do where (row.TestData1 > 2) select row } |> Seq.iter (fun row -> printfn "%d %s" row.TestData1 row.Name)
Étapes suivantes
Vous pouvez continuer à utiliser d'autres expressions de requête, ou obtenir une connexion de base de données du contexte de données et effectuer des opérations normales de données ADO.NET. Pour des étapes supplémentaires, consultez les sections après « requête les données » dans Procédure pas à pas : accès à une base de données SQL à l'aide des fournisseurs de type (F#).
Voir aussi
Tâches
Procédure pas à pas : accès à une base de données SQL à l'aide des fournisseurs de type (F#)
Référence
DbmlFile, fournisseur de type (F#)
SqlMetal.exe (outil de génération de code)