Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
Azure SQL База данных
Azure SQL Управляемый экземпляр
SQL База данных в Microsoft Fabric
С помощью ссылок на проекты базы данных SQL можно создавать зависимости между проектом SQL и другими проектами. Существует два основных типа ссылок на проекты:
-
Ссылки на базы данных — зависимости между проектами SQL или ссылками на
.dacpacфайлы и пакеты NuGet, которые предоставляют определения объектов базы данных. - Ссылки на проекты .NET— ссылки на проекты .NET в SQL для таких сценариев, как тестирование интеграции, автоматизация развертывания и создание кода.
Когда вы понимаете, когда и как использовать каждую ссылку, можно эффективно структурировать рабочий процесс разработки базы данных.
Ссылки на базу данных
Ссылки на базы данных позволяют проекту SQL включать объекты из другого проекта SQL, .dacpac файла или опубликованного пакета NuGet. Эти ссылки используются, когда объекты базы данных зависят от объектов, определенных в другом месте, таких как таблицы в общей схеме или системных объектах базы данных.
Базовая ссылка на базу данных другого проекта SQL в том же решении выглядит следующим образом:
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" />
</ItemGroup>
Ссылки на базы данных поддерживают три типа связей:
- Та же база данных — объекты из указанного проекта становятся частью той же модели базы данных.
- Разные базы данных, один и тот же сервер — эталонные объекты, использующие трехкомпонентное именование с переменной SQLCMD для имени базы данных.
- Разные базы данных, разные серверы — эталонные объекты с использованием именования четырех частей с переменными SQLCMD для имен серверов и баз данных.
Подробные сведения о настройке ссылок на базу данных, включая примеры для каждого типа связи и рекомендации по созданию и публикации проектов со ссылками, см. в обзоре ссылок на базы данных.
Ссылки на проект .NET
Проекты .NET могут ссылаться на проекты SQL для интеграции разработки баз данных с кодом приложения. Этот ссылочный тип полезен, если приложению .NET требуется доступ к выходным данным сборки проекта SQL ( .dacpac файл) для тестирования, развертывания или создания кода.
Случаи использования
Распространенные сценарии ссылки на проект SQL из проекта .NET:
- Тесты интеграции . Тестирование проектов, которые развертывают схему базы данных в тестовом контейнере или локальном экземпляре перед выполнением тестов.
-
Автоматизация развертывания — консольные приложения или средства, которые программно развёртывают
.dacpacв целевые среды. - Создание кода модели — приложения, создающие код на основе схемы базы данных, определенной в проекте SQL.
Настройка ссылки на проект
При добавлении ссылки на проект .NET в проект SQL необходимо включить ReferenceOutputAssembly="false" атрибут. Этот атрибут сообщает процессу сборки .NET рассматривать проект SQL как зависимость сборки, не пытаясь ссылаться на него как сборку .NET.
<ItemGroup>
<ProjectReference Include="..\Database1\Database1.sqlproj" ReferenceOutputAssembly="false" />
</ItemGroup>
Этот ReferenceOutputAssembly="false" параметр необходим, так как проекты SQL создают .dacpac файл в качестве основного результата, в отличие от сборки .NET. Без этого атрибута процесс сборки .NET пытается загрузить .dacpac как сборку и завершается с ошибкой, аналогичной следующей:
error CS0009: Metadata file 'Database1.dacpac' could not be opened -- Unknown file format.
Доступ к DACPAC в проекте .NET
После настройки ссылки на проект проект SQL создается перед проектом .NET. Файл .dacpac доступен в выходном каталоге проекта SQL (обычно bin/Debug или bin/Release).
Чтобы программно получить доступ к .dacpac в коде .NET, укажите путь к файлу относительно структуры вашего проекта. Например, в тесте интеграции, использующего Testcontainers для создания экземпляра 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");
Скопируйте "dacpac" в выходной каталог
Чтобы упростить доступ к файлу .dacpac , настройте проект .NET, чтобы скопировать его в выходной каталог во время сборки. Добавьте в файл следующую конфигурацию .csproj :
<ItemGroup>
<None Include="..\Database1\bin\$(Configuration)\Database1.dacpac"
CopyToOutputDirectory="PreserveNewest"
Link="Database1.dacpac" />
</ItemGroup>
Эта конфигурация копирует файл .dacpac в выходной каталог вашего проекта .NET, чтобы вы могли ссылаться на него по более простому пути:
var dacpacPath = Path.Combine(
AppContext.BaseDirectory,
"Database1.dacpac");