Поделиться через


интеграция .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
      }
    }
  }
}