Partager via


Vue d’ensemble des références de projet

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Avec les références de projet dans les projets de base de données SQL, vous pouvez créer des dépendances entre votre projet SQL et d’autres projets. Il existe deux types principaux de références de projet :

  • Références de base de données : dépendances entre les projets SQL ou les références aux .dacpac fichiers et aux packages NuGet qui fournissent des définitions d’objets de base de données.
  • Références de projet .NET : références de projets .NET à des projets SQL pour des scénarios tels que les tests d’intégration, l’automatisation du déploiement et la génération de code.

Lorsque vous comprenez quand et comment utiliser chaque type de référence, vous pouvez structurer efficacement votre workflow de développement de base de données.

Références de base de données

Les références de base de données permettent à un projet SQL d’incorporer des objets à partir d’un autre projet SQL, d’un .dacpac fichier ou d’un package NuGet publié. Ces références sont utilisées lorsque vos objets de base de données dépendent d’objets définis ailleurs, tels que les tables d’un schéma partagé ou d’objets de base de données système.

Une référence de base de données à un autre projet SQL dans la même solution ressemble à ceci :

<ItemGroup>
  <ProjectReference Include="..\Database1\Database1.sqlproj" />
</ItemGroup>

Les références de base de données prennent en charge trois types de relation :

  • Même base de données : les objets du projet référencé font partie du même modèle de base de données.
  • Base de données différente, même serveur - Objets de référence utilisant un nommage en trois parties avec une variable SQLCMD pour le nom de la base de données.
  • Différentes bases de données, différents serveurs - Objets de référence utilisant un nommage en quatre parties avec des variables SQLCMD pour les noms de serveur et de base de données.

Pour plus d’informations sur la configuration des références de base de données, notamment des exemples pour chaque type de relation et des conseils sur la création et la publication de projets avec des références, consultez la vue d’ensemble des références de base de données.

Références de projet .NET

Les projets .NET peuvent référencer des projets SQL pour intégrer le développement de bases de données au code d’application. Ce type de référence est utile lorsque votre application .NET a besoin d’accéder à la sortie de build du projet SQL (le .dacpac fichier) à des fins de test, de déploiement ou de génération de code.

Cas d’utilisation

Les scénarios courants de référencement d’un projet SQL à partir d’un projet .NET sont les suivants :

  • Tests d’intégration : projets de test qui déploient le schéma de base de données sur un conteneur de test ou une instance locale avant d’exécuter des tests.
  • Automatisation du déploiement : applications ou outils console qui déploient de manière programmatique le .dacpac vers des environnements cibles.
  • Génération de code de modèle : applications qui génèrent du code basé sur le schéma de base de données défini dans le projet SQL.

Configurer la référence du projet

Lorsque vous ajoutez une référence de projet d’un projet .NET à un projet SQL, vous devez inclure l’attribut ReferenceOutputAssembly="false" . Cet attribut indique au processus de génération .NET de traiter le projet SQL comme une dépendance de build sans tenter de le référencer en tant qu’assembly .NET.

<ItemGroup>
  <ProjectReference Include="..\Database1\Database1.sqlproj" ReferenceOutputAssembly="false" />
</ItemGroup>

Le ReferenceOutputAssembly="false" paramètre est requis, car les projets SQL produisent un .dacpac fichier en tant que sortie principale, et non comme assembly .NET. Sans cet attribut, le processus de génération .NET tente de charger le .dacpac fichier en tant qu’assembly et échoue avec une erreur similaire à :

error CS0009: Metadata file 'Database1.dacpac' could not be opened -- Unknown file format.

Accéder à la DACPAC dans votre projet .NET

Après avoir configuré la référence du projet, le projet SQL est généré avant votre projet .NET. Le .dacpac fichier est disponible dans le répertoire de sortie du projet SQL (généralement bin/Debug ou bin/Release).

Pour accéder .dacpac par programmation à votre code .NET, référencez le chemin d’accès du fichier par rapport à la structure de votre projet. Par exemple, dans un test d’intégration qui utilise Testcontainers pour créer une instance SQL Server :

// Path to the dacpac file built by the referenced SQL project
var dacpacPath = Path.Combine(
    Directory.GetCurrentDirectory(),
    "..", "..", "..", "..",
    "Database1", "bin", "Debug",
    "Database1.dacpac");

// Use DacFx to deploy the dacpac to your test database
var dacServices = new DacServices(connectionString);
using var dacpac = DacPackage.Load(dacpacPath);
dacServices.Deploy(dacpac, "TestDatabase");

Copier le dacpac dans le répertoire de sortie

Pour faciliter l’accès au .dacpac fichier, configurez votre projet .NET pour le copier dans le répertoire de sortie pendant la génération. Ajoutez la configuration suivante à votre fichier .csproj :

<ItemGroup>
  <None Include="..\Database1\bin\$(Configuration)\Database1.dacpac"
        CopyToOutputDirectory="PreserveNewest"
        Link="Database1.dacpac" />
</ItemGroup>

Cette configuration copie le fichier dans le .dacpac répertoire de sortie de votre projet .NET. Vous pouvez donc le référencer à l’aide d’un chemin plus simple :

var dacpacPath = Path.Combine(
    AppContext.BaseDirectory,
    "Database1.dacpac");