интеграция .NET.NET Aspire Community Toolkit SQLite
включает в себя: интеграция размещения и интеграция
Client
Заметка
Эта интеграция является частью набора средств сообщества .NET.NET Aspire и официально не поддерживается командой .NET.NET Aspire.
SQLite — это упрощенный, бессерверный, автономный ядро СУБД SQL, широко используемый для локального хранилища данных в приложениях. Интеграция .NET Aspire SQLite предоставляет способ использования баз данных SQLite в приложениях .NET Aspire и доступа к ним через клиент Microsoft.Data.Sqlite
.
Интеграция хостинга
Интеграция размещения SQLite моделирует базу данных SQLite как тип SQLiteResource
и создаст файл базы данных в указанном расположении. Чтобы получить доступ к этим типам и API, которые позволяют добавить пакет NuGet 📦 CommunityToolkit.Aspire.Hosting.SQLite в проект узла приложения .
dotnet add package CommunityToolkit.Aspire.Hosting.SQLite
Дополнительные сведения см. в статье dotnet add package или Управление зависимостями пакетов в приложениях .NET.
Добавление ресурса SQLite
В проекте хоста приложения зарегистрируйте и используйте интеграцию SQLite с помощью метода расширения AddSQLite
, чтобы добавить базу данных SQLite в построитель приложений.
var builder = DistributedApplication.CreateBuilder(args);
var sqlite = builder.AddSQLite("my-database");
var exampleProject = builder.AddProject<Projects.ExampleProject>()
.WithReference(sqlite);
Когда .NET.NET Aspire добавляет базу данных SQLite на узел приложения, как показано в предыдущем примере, он создает новый файл базы данных SQLite в временном каталоге пользователя.
Кроме того, если вы хотите указать пользовательское расположение для файла базы данных SQLite, укажите соответствующие аргументы для метода AddSqlite
.
var sqlite = builder.AddSQLite("my-database", "C:\\Database\\Location", "my-database.db");
Добавление ресурса SQLiteWeb
При добавлении ресурса SQLite можно также добавить ресурс SQLiteWeb, который предоставляет веб-интерфейс для взаимодействия с базой данных SQLite. Для этого используйте метод расширения WithSqliteWeb
.
var sqlite = builder.AddSQLite("my-database")
.WithSqliteWeb();
Этот код добавляет контейнер на основе ghcr.io/coleifer/sqlite-web
к хосту приложения, который предоставляет веб-интерфейс для взаимодействия с базой данных SQLite, к которой он подключен. Каждый экземпляр SQLiteWeb подключен к одной базе данных SQLite, то есть при добавлении нескольких экземпляров SQLiteWeb будет несколько контейнеров SQLiteWeb.
Добавление расширений SQLite
SQLite поддерживает расширения, которые можно добавить в базу данных SQLite. Расширения можно предоставлять с помощью пакета NuGet или с помощью расположения на диске. Используйте методы расширения WithNuGetExtension
или WithLocalExtension
для добавления расширений в базу данных SQLite.
Заметка
Поддержка расширений SQLite считается экспериментальной и создает предупреждение CTASPIRE002
.
интеграция Client
Чтобы приступить к работе с интеграцией клиента .NET.NET Aspire SQLite, установите 📦 CommunityToolkit.Aspire.Microsoft.Data.Sqlite пакет NuGet в проекте, использующем клиента, то есть в проекте приложения, использующего клиент SQLite. Интеграция клиента SQLite регистрирует экземпляр SqliteConnection
, который можно использовать для взаимодействия с SQLite.
dotnet add package CommunityToolkit.Aspire.Microsoft.Data.Sqlite
Добавление клиента Sqlite
В файле Program.cs проекта, используемого клиентом, вызовите метод расширения Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection
для любой IHostApplicationBuilder, чтобы зарегистрировать SqliteConnection
для использования с помощью контейнера внедрения зависимостей. Метод принимает параметр имени подключения.
builder.AddSqliteConnection(connectionName: "sqlite");
Совет
Параметр connectionName
должен соответствовать имени, используемому при добавлении ресурса SQLite в проект узла приложения. Дополнительные сведения см. в статье Добавление ресурса SQLite.
После добавления SqliteConnection
можно получить экземпляр SqliteConnection
с помощью внедрения зависимостей в билдер. Например, чтобы получить объект подключения из примера службы, определите его как параметр конструктора и убедитесь, что класс ExampleService
зарегистрирован в контейнере внедрения зависимостей:
public class ExampleService(SqliteConnection connection)
{
// Use connection...
}
Дополнительные сведения о внедрении зависимостей см. в разделе .NET.
Добавление идентифицированного клиента Sqlite
Могут возникнуть ситуации, когда требуется зарегистрировать несколько экземпляров SqliteConnection
с различными именами подключений. Чтобы зарегистрировать ключи клиентов Sqlite, вызовите метод Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddKeyedSqliteConnection
:
builder.AddKeyedSqliteConnection(name: "chat");
builder.AddKeyedSqliteConnection(name: "queue");
Затем можно получить SqliteConnection
экземпляры с помощью внедрения зависимостей. Например, чтобы получить подключение из сервиса-примера:
public class ExampleService(
[FromKeyedServices("chat")] SqliteConnection chatConnection,
[FromKeyedServices("queue")] SqliteConnection queueConnection)
{
// Use connections...
}
Конфигурация
Интеграция клиента SQLite предоставляет несколько подходов к конфигурации и параметров для удовлетворения требований и соглашений проекта.
Используйте строку подключения
При использовании строки подключения из раздела конфигурации ConnectionStrings
можно указать имя строки подключения при вызове метода Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection
:
builder.AddSqliteConnection("sqlite");
Затем строка подключения будет получена из раздела конфигурации ConnectionStrings
.
{
"ConnectionStrings": {
"sqlite": "Data Source=C:\\Database\\Location\\my-database.db"
}
}
Использование поставщиков конфигураций
Интеграция клиента SQLite поддерживает Microsoft.Extensions.Configuration. Он загружает Microsoft.Extensions.Hosting.SqliteConnectionSettings
из appsettings.json или других поставщиков конфигурации с помощью ключа Aspire:Sqlite:Client
. Пример appsettings.json, который настраивает некоторые параметры:
{
"Aspire": {
"Sqlite": {
"Client": {
"ConnectionString": "Data Source=C:\\Database\\Location\\my-database.db",
"DisableHealthCheck": true
}
}
}
}
.NET Aspire