Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Com referências de projeto em projetos de bases de dados SQL, pode criar dependências entre o seu projeto SQL e outros projetos. Existem dois tipos principais de referências de projeto:
-
Referências de base de dados - Dependências entre projetos SQL ou referências a
.dacpacficheiros e pacotes NuGet que fornecem definições de objetos de base de dados. - Referências de projetos .NET - Referências de projetos .NET para projetos SQL para cenários como testes de integração, automação de implementação e geração de código.
Quando percebe quando e como usar cada tipo de referência, pode estruturar eficazmente o seu fluxo de trabalho de desenvolvimento de bases de dados.
Referências de bases de dados
As referências à base de dados permitem que um projeto SQL incorpore objetos de outro projeto SQL, um .dacpac ficheiro ou um pacote NuGet publicado. Estas referências são usadas quando os seus objetos de base de dados dependem de objetos definidos noutros locais, como tabelas num esquema partilhado ou objetos de base de dados do sistema.
Uma referência básica de base de dados a outro projeto SQL na mesma solução é a seguinte:
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" />
</ItemGroup>
As referências de bases de dados suportam três tipos de relação:
- Mesma base de dados - Os objetos do projeto referenciado passam a fazer parte do mesmo modelo de base de dados.
- Base de dados diferente, mesmo servidor - Objetos de referência usando nomeação em três partes com uma variável SQLCMD para o nome da base de dados.
- Base de dados diferente, servidor diferente - Objetos de referência usando nomes em quatro partes com variáveis SQLCMD tanto para nomes de servidores como de bases de dados.
Para informações detalhadas sobre a configuração de referências de bases de dados, incluindo exemplos para cada tipo de relação e orientações sobre a construção e publicação de projetos com referências, consulte Visão Geral de Referências da Base de Dados.
Referências do projeto .NET
Os projetos .NET podem referenciar projetos SQL para integrar o desenvolvimento de bases de dados com o código da aplicação. Este tipo de referência é útil quando a sua aplicação .NET precisa de acesso à saída de build do projeto SQL (o .dacpac ficheiro) para testes, implementação ou geração de código.
Casos de uso
Cenários comuns para referenciar um projeto SQL a partir de um projeto .NET incluem:
- Testes de integração - Projetos de teste que implementam o esquema da base de dados para um contentor de teste ou instância local antes de executar os testes.
-
Automação de implementação - Aplicações ou ferramentas de consola que implementam programaticamente o
.dacpacnos ambientes-alvo. - Geração de código modelo - Aplicações que geram código com base no esquema da base de dados definido no projeto SQL.
Configurar a referência do projeto
Quando adiciona uma referência de projeto de um projeto .NET a um projeto SQL, deve incluir o ReferenceOutputAssembly="false" atributo. Este atributo indica ao processo de compilação .NET para tratar o projeto SQL como uma dependência de compilação sem tentar referenciar-lo como uma assembly .NET.
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" ReferenceOutputAssembly="false" />
</ItemGroup>
A ReferenceOutputAssembly="false" definição é necessária porque os projetos SQL produzem um .dacpac ficheiro como saída principal, e não um assembly .NET. Sem este atributo, o processo de compilação .NET tenta carregar o .dacpac como assembly e falha com um erro semelhante a:
error CS0009: Metadata file 'Database1.dacpac' could not be opened -- Unknown file format.
Acede ao DACPAC no teu projeto .NET
Depois de configurar a referência do projeto, o projeto SQL compila-se antes do seu projeto .NET. O .dacpac ficheiro está disponível no diretório de saída do projeto SQL (tipicamente bin/Debug ou bin/Release).
Para aceder programaticamente ao .dacpac no seu código .NET, referencia o caminho do ficheiro relativamente à estrutura do projeto. Por exemplo, num teste de integração que utiliza Testcontainers para criar uma instância do 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");
Copie o dacpac para o diretório de saída
Para um acesso mais fácil ao .dacpac ficheiro, configure o seu projeto .NET para o copiar para o diretório de saída durante a compilação. Adicione a seguinte configuração ao seu .csproj ficheiro:
<ItemGroup>
<None Include="..\Database1\bin\$(Configuration)\Database1.dacpac"
CopyToOutputDirectory="PreserveNewest"
Link="Database1.dacpac" />
</ItemGroup>
Esta configuração copia o .dacpac ficheiro para o diretório de saída do seu projeto .NET, por isso pode referenciar o ficheiro usando um caminho mais simples:
var dacpacPath = Path.Combine(
AppContext.BaseDirectory,
"Database1.dacpac");