Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Включает: интеграция хостинга — и —
Client Интеграция
Заметка
Эта интеграция входит в состав набора средств сообщества .NET.NET Aspire и .
SQLite — это упрощенный, бессерверный, автономный ядро СУБД SQL, широко используемый для локального хранилища данных в приложениях. Интеграция .NET Aspire SQLite предоставляет способ использования баз данных SQLite в приложениях .NET Aspire и доступа к ним с помощью пакета поддержки Entity Framework Microsoft.EntityFrameworkCore.Sqlite
.
Интеграция хостинга
Интеграция хостинга SQLite моделирует базу данных SQLite как тип SQLiteResource
и создаёт файл базы данных в указанном расположении. Чтобы получить доступ к этим типам и API, которые позволяют добавлять пакет NuGet 📦CommunityToolkit.Aspire.Hosting.SQLite в проект app host.
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 EF, установите 📦 CommunityToolkit.Aspire. Microsoft.EntityFrameworkCore.Sqlite пакет NuGet в проекте, использующем клиент, то есть приложении, использующем клиент SQLite. Интеграция клиента SQLite регистрирует экземпляр SqliteConnection
, который можно использовать для взаимодействия с SQLite.
dotnet add package CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite
Добавление клиента Sqlite
В файле Program.cs проекта, используемого клиентом, вызовите метод расширения Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext
для любой IHostApplicationBuilder, чтобы зарегистрировать подкласс DbContext для использования через контейнер внедрения зависимостей. Метод принимает параметр имени подключения.
builder.AddSqliteDbContext<YourDbContext>(connectionName: "sqlite");
Совет
Параметр connectionName
должен соответствовать имени, используемому при добавлении ресурса SQLite в проект узла приложения. Дополнительные сведения см. в статье Добавление ресурса SQLite.
После добавления YourDbContext
в построитель можно получить экземпляр YourDbContext
с помощью внедрения зависимостей. Например, чтобы получить объект источника данных из примера службы, определите его как параметр конструктора и убедитесь, что класс ExampleService
зарегистрирован в контейнере внедрения зависимостей:
public class ExampleService(YourDbContext context)
{
// Use context...
}
Дополнительные сведения о внедрении зависимостей см. в .NET.
Обогащение контекста базы данных SQLite
Вы можете использовать стандартный метод Entity Framework для получения контекста базы данных и добавления его в контейнер внедрения зависимостей:
builder.Services.AddDbContext<YourDbContext>(options =>
options.UseSqlite(builder.Configuration.GetConnectionString("sqlite")
?? throw new InvalidOperationException("Connection string 'sqlite' not found.")));
Заметка
Имя строки подключения, передаваемое методу GetConnectionString, должно соответствовать имени, используемому при добавлении ресурса SQLite в проект узла приложения. Дополнительные сведения см. в статье Добавление ресурса SQLite.
Конфигурация
Интеграция клиента SQLite предоставляет несколько подходов к конфигурации и параметров для удовлетворения требований и соглашений проекта.
Используйте строку подключения
При использовании строки подключения из раздела конфигурации ConnectionStrings
можно указать имя строки подключения при вызове метода Microsoft.Extensions.Hosting.AspireEFSqliteExtensions.AddSqliteDbContext
:
builder.AddSqliteDbContext<YourDbContext>("sqlite");
Затем строка подключения будет получена из раздела конфигурации ConnectionStrings
.
{
"ConnectionStrings": {
"sqlite": "Data Source=C:\\Database\\Location\\my-database.db"
}
}
Использование поставщиков конфигураций
Интеграция клиента SQLite поддерживает Microsoft.Extensions.Configuration. Загрузка Microsoft.Extensions.Hosting.SqliteConnectionSettings
из appsettings.json или других поставщиков конфигурации осуществляется с помощью ключа Aspire:Sqlite:EntityFrameworkCore:Sqlite
. Пример _appsettings.json, который настраивает некоторые параметры:
{
"Aspire": {
"Sqlite": {
"EntityFrameworkCore": {
"Sqlite": {
"ConnectionString": "Data Source=C:\\Database\\Location\\my-database.db",
"DisableHealthCheck": true
}
}
}
}
}
.NET Aspire