Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia
administrada de Azure SQLBase de datos SQL en Microsoft Fabric
Con las referencias de proyecto en proyectos de base de datos SQL, puede crear dependencias entre el proyecto de SQL y otros proyectos. Hay dos tipos principales de referencias de proyecto:
-
Referencias de base de datos: dependencias entre proyectos SQL o referencias a
.dacpacarchivos y paquetes NuGet que proporcionan definiciones de objetos de base de datos. - Referencias de proyecto de .NET: referencias de proyectos de .NET a proyectos SQL para escenarios como pruebas de integración, automatización de la implementación y generación de código.
Cuando comprenda cuándo y cómo usar cada tipo de referencia, puede estructurar el flujo de trabajo de desarrollo de bases de datos de forma eficaz.
Referencias de base de datos
Las referencias de base de datos permiten a un proyecto SQL incorporar objetos de otro proyecto de SQL, un .dacpac archivo o un paquete NuGet publicado. Estas referencias se usan cuando los objetos de base de datos dependen de objetos definidos en otra parte, como tablas de un esquema compartido o objetos de base de datos del sistema.
Una referencia de base de datos básica a otro proyecto SQL de la misma solución tiene este aspecto:
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" />
</ItemGroup>
Las referencias de base de datos admiten tres tipos de relación:
- Misma base de datos : los objetos del proyecto al que se hace referencia forman parte del mismo modelo de base de datos.
- Base de datos diferente, el mismo servidor : haga referencia a objetos con nomenclatura de tres partes con una variable SQLCMD para el nombre de la base de datos.
- Base de datos diferente, servidor diferente : haga referencia a objetos con nomenclatura de cuatro partes con variables SQLCMD para los nombres de servidor y de base de datos.
Para obtener información detallada sobre la configuración de referencias de base de datos, incluidos ejemplos para cada tipo de relación e instrucciones sobre la creación y publicación de proyectos con referencias, consulte Introducción a las referencias de base de datos.
Referencias de proyecto de .NET
Los proyectos de .NET pueden hacer referencia a proyectos SQL para integrar el desarrollo de bases de datos con código de aplicación. Este tipo de referencia es útil cuando la aplicación .NET necesita acceso a la salida de compilación del proyecto de SQL (el .dacpac archivo) con fines de prueba, implementación o generación de código.
Casos de uso
Entre los escenarios comunes para hacer referencia a un proyecto de SQL desde un proyecto de .NET se incluyen:
- Pruebas de integración : pruebe proyectos que implementen el esquema de base de datos en un contenedor de prueba o una instancia local antes de ejecutar pruebas.
-
Automatización de la implementación: aplicaciones o herramientas de consola que despliegan automáticamente el
.dacpacen los entornos de destino. - Generación de código de modelo : aplicaciones que generan código basado en el esquema de base de datos definido en el proyecto SQL.
Configuración de la referencia del proyecto
Al agregar una referencia de proyecto de un proyecto de .NET a un proyecto de SQL, debe incluir el ReferenceOutputAssembly="false" atributo . Este atributo indica al proceso de compilación de .NET que trate el proyecto de SQL como una dependencia de compilación sin intentar hacer referencia a él como un ensamblado de .NET.
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" ReferenceOutputAssembly="false" />
</ItemGroup>
La ReferenceOutputAssembly="false" configuración es necesaria porque los proyectos de SQL generan un .dacpac archivo como salida principal, no un ensamblado de .NET. Sin este atributo, el proceso de compilación de .NET intenta cargar el .dacpac como ensamblado y falla con un error similar a:
error CS0009: Metadata file 'Database1.dacpac' could not be opened -- Unknown file format.
Acceso al DACPAC en el proyecto de .NET
Después de configurar la referencia del proyecto, el proyecto SQL se compila antes del proyecto de .NET. El .dacpac archivo está disponible en el directorio de salida del proyecto SQL (normalmente bin/Debug o bin/Release).
Para acceder al código .dacpac de .NET mediante programación, haga referencia a la ruta de acceso del archivo en relación con la estructura del proyecto. Por ejemplo, en una prueba de integración que usa Testcontainers para crear una instancia de 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 el dacpac en el directorio de salida.
Para facilitar el acceso al archivo, configure el .dacpac proyecto de .NET para copiarlo en el directorio de salida durante la compilación. Agrega la configuración siguiente al archivo .csproj:
<ItemGroup>
<None Include="..\Database1\bin\$(Configuration)\Database1.dacpac"
CopyToOutputDirectory="PreserveNewest"
Link="Database1.dacpac" />
</ItemGroup>
Esta configuración copia el archivo en el .dacpac directorio de salida del proyecto de .NET, por lo que puede hacer referencia a él mediante una ruta de acceso más sencilla:
var dacpacPath = Path.Combine(
AppContext.BaseDirectory,
"Database1.dacpac");