Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Database SQL di Microsoft Fabric
Dengan referensi proyek dalam proyek database SQL, Anda dapat membuat dependensi antara proyek SQL dan proyek lainnya. Ada dua jenis utama referensi proyek:
-
Referensi database - Dependensi antara proyek SQL atau referensi ke
.dacpacfile dan paket NuGet yang menyediakan definisi objek database. - Referensi proyek .NET - Referensi dari proyek .NET ke proyek SQL untuk skenario seperti pengujian integrasi, otomatisasi penyebaran, dan pembuatan kode.
Saat Anda memahami kapan dan bagaimana menggunakan setiap jenis referensi, Anda dapat menyusun alur kerja pengembangan database Anda secara efektif.
Referensi database
Referensi database memungkinkan proyek SQL menggabungkan objek dari proyek SQL lain, .dacpac file, atau paket NuGet yang diterbitkan. Referensi ini digunakan saat objek database Anda bergantung pada objek yang ditentukan di tempat lain, seperti tabel dalam skema bersama atau objek database sistem.
Referensi database dasar ke proyek SQL lain dalam solusi yang sama terlihat seperti ini:
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" />
</ItemGroup>
Referensi database mendukung tiga jenis hubungan:
- Database yang sama - Objek dari proyek yang dirujuk menjadi bagian dari model database yang sama.
- Database yang berbeda, server yang sama - Objek referensi menggunakan penamaan tiga bagian dengan variabel SQLCMD untuk nama database.
- Database yang berbeda, server yang berbeda - Objek referensi menggunakan penamaan empat bagian dengan variabel SQLCMD untuk nama server dan database.
Untuk informasi terperinci tentang mengonfigurasi referensi database, termasuk contoh untuk setiap jenis hubungan dan panduan tentang membangun dan menerbitkan proyek dengan referensi, lihat Gambaran umum referensi database.
Referensi proyek .NET
Proyek .NET dapat mereferensikan proyek SQL untuk mengintegrasikan pengembangan database dengan kode aplikasi. Jenis referensi ini berguna ketika aplikasi .NET Anda memerlukan akses ke output build proyek SQL ( .dacpac file) untuk tujuan pengujian, penyebaran, atau pembuatan kode.
Kasus penggunaan
Skenario umum untuk mereferensikan proyek SQL dari proyek .NET meliputi:
- Pengujian integrasi - Uji proyek yang menyebarkan skema database ke kontainer pengujian atau instans lokal sebelum menjalankan pengujian.
-
Otomatisasi penyebaran - Aplikasi atau alat konsol yang secara terprogram menyebarkan
.dacpacke lingkungan target. - Pembuatan kode model - Aplikasi yang menghasilkan kode berdasarkan skema database yang ditentukan dalam proyek SQL.
Mengonfigurasi referensi proyek
Saat Anda menambahkan referensi proyek dari proyek .NET ke proyek SQL, Anda harus menyertakan ReferenceOutputAssembly="false" atribut . Atribut ini memberi tahu proses build .NET untuk memperlakukan proyek SQL sebagai dependensi build tanpa mencoba mereferensikannya sebagai rakitan .NET.
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" ReferenceOutputAssembly="false" />
</ItemGroup>
Pengaturan ReferenceOutputAssembly="false" diperlukan karena proyek SQL menghasilkan .dacpac file sebagai output utamanya, bukan rakitan .NET. Tanpa atribut ini, proses build .NET mencoba memuat .dacpac sebagai rakitan dan gagal dengan kesalahan yang mirip dengan:
error CS0009: Metadata file 'Database1.dacpac' could not be opened -- Unknown file format.
Mengakses DACPAC di proyek .NET Anda
Setelah Anda mengonfigurasi referensi proyek, proyek SQL dibangun sebelum proyek .NET Anda. File .dacpac tersedia di direktori output proyek SQL (biasanya bin/Debug atau bin/Release).
Untuk mengakses .dacpac secara terprogram dalam kode .NET Anda, referensikan jalur file relatif terhadap struktur proyek Anda. Misalnya, dalam pengujian integrasi yang menggunakan Testcontainers untuk membuat instans 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");
Menyalin dacpac ke direktori output
Untuk akses yang lebih mudah ke .dacpac file, konfigurasikan proyek .NET Anda untuk menyalinnya ke direktori output selama build. Tambahkan konfigurasi berikut ke file Anda .csproj :
<ItemGroup>
<None Include="..\Database1\bin\$(Configuration)\Database1.dacpac"
CopyToOutputDirectory="PreserveNewest"
Link="Database1.dacpac" />
</ItemGroup>
Konfigurasi ini menyalin .dacpac file ke direktori output proyek .NET Anda, sehingga Anda dapat mereferensikannya menggunakan jalur yang lebih sederhana:
var dacpacPath = Path.Combine(
AppContext.BaseDirectory,
"Database1.dacpac");