Aracılığıyla paylaş


.NET .NET Aspire Community Toolkit SQLite tümleştirmesi

Içerir: Barındırma tümleştirmesi ve Client tümleştirmesi

Not

Bu tümleştirme, .NET.NET Aspire Topluluk Araç Seti'nin bir parçasıdır ve resmi olarak .NET.NET Aspire ekibi tarafından desteklenmez.

SQLite, uygulamalarda yerel veri depolama için yaygın olarak kullanılan hafif, sunucusuz, bağımsız bir SQL veritabanı altyapısıdır. .NET Aspire SQLite tümleştirmesi, .NET Aspire uygulamalarınızdaki SQLite veritabanlarını kullanmanın ve bunlara Microsoft.Data.Sqlite istemcisi aracılığıyla erişmenin bir yolunu sağlar.

Barındırma entegrasyonu

SQLite barındırma tümleştirmesi, SQLiteResource türü olarak bir SQLite veritabanını modeller ve veritabanı dosyasını belirtilen konumda oluşturur. Bu türlere ve API'lere erişim sağlamak ve 📦 CommunityToolkit,Aspire, Hosting.SQLite NuGet paketini uygulama konağı projesine eklemek için.

dotnet add package CommunityToolkit.Aspire.Hosting.SQLite

Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.

SQLite kaynağı ekleme

Uygulama ana bilgisayarı projesinde, SQLite veritabanını uygulama oluşturucuya eklemek için AddSQLite uzantı yöntemini kullanarak SQLite tümleştirmesini kaydedin ve tüketin.

var builder = DistributedApplication.CreateBuilder(args);

var sqlite = builder.AddSQLite("my-database");

var exampleProject = builder.AddProject<Projects.ExampleProject>()
                            .WithReference(sqlite);

.NET .NET Aspire önceki örnekte gösterildiği gibi uygulama konağına bir SQLite veritabanı eklediğinde, kullanıcılar geçici dizininde yeni bir SQLite veritabanı dosyası oluşturur.

Alternatif olarak, SQLite veritabanı dosyası için özel bir konum belirtmek istiyorsanız, AddSqlite yöntemine uygun bağımsız değişkenleri sağlayın.

var sqlite = builder.AddSQLite("my-database", "C:\\Database\\Location", "my-database.db");

SQLiteWeb kaynağı ekleme

SQLite kaynağını eklerken, SQLite veritabanıyla etkileşime geçmek için bir web arabirimi sağlayan SQLiteWeb kaynağını da ekleyebilirsiniz. Bunu yapmak için WithSqliteWeb uzantısı yöntemini kullanın.

var sqlite = builder.AddSQLite("my-database")
                    .WithSqliteWeb();

Bu kod, bağlı olduğu SQLite veritabanıyla etkileşime geçmek için bir web arabirimi sağlayan uygulama konağına ghcr.io/coleifer/sqlite-web temel alan bir kapsayıcı ekler. Her SQLiteWeb örneği tek bir SQLite veritabanına bağlanır; başka bir deyişle, birden çok SQLiteWeb örneği eklerseniz birden çok SQLiteWeb kapsayıcısı olur.

SQLite uzantıları ekleme

SQLite, SQLite veritabanına eklenebilen uzantıları destekler. Uzantılar bir NuGet paketi veya disk üzerindeki bir konum aracılığıyla sağlanabilir. SQLite veritabanına uzantı eklemek için WithNuGetExtension veya WithLocalExtension uzantı yöntemlerini kullanın.

Not

SQLite uzantıları desteği deneysel olarak kabul edilir ve CTASPIRE002 bir uyarı üretir.

Client tümleştirmesi

İstemci tarafında, yani SQLite istemcisini kullanan uygulamanın projesinde, .NET.NET Aspire SQLite istemci tümleştirmesini kullanmaya başlamak için 📦 CommunityToolkit'i veAspireMicrosoft.Data.Sqlite NuGet paketini yükleyin. SQLite istemci tümleştirmesi, SQLite ile etkileşime geçmek için kullanabileceğiniz bir SqliteConnection örneği kaydeder.

dotnet add package CommunityToolkit.Aspire.Microsoft.Data.Sqlite

Sqlite istemcisi ekle

Herhangi bir IHostApplicationBuilder üzerinde Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection uzantı yöntemini çağırarak, istemci tüketen projenizdeki Program.cs dosyasında, bağımlılık enjeksiyon kapsayıcısı aracılığıyla kullanılmak üzere bir SqliteConnection kaydedin. yöntemi bir bağlantı adı parametresi alır.

builder.AddSqliteConnection(connectionName: "sqlite");

Bahşiş

connectionName parametresi, uygulama ana bilgisayar projesine SQLite kaynağı eklenirken kullanılan adla eşleşmelidir. Daha fazla bilgi için bkz. SQLite kaynağı ekleme.

Oluşturucuya SqliteConnection ekledikten sonra bağımlılık ekleme kullanarak SqliteConnection örneğini alabilirsiniz. Örneğin, örnek bir hizmetten bağlantı nesnenizi almak için bunu bir oluşturucu parametresi olarak tanımlayın ve ExampleService sınıfının bağımlılık ekleme kapsayıcısına kayıtlı olduğundan emin olun:

public class ExampleService(SqliteConnection connection)
{
    // Use connection...
}

Bağımlılık ekleme hakkında daha fazla bilgi için bkz. .NET bağımlılık ekleme.

Anahtarlı Sqlite istemcisi ekleme

Farklı bağlantı adlarına sahip birden çok SqliteConnection örneğini kaydetmek istediğiniz durumlar olabilir. Anahtarlı Sqlite istemcilerini kaydetmek için Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddKeyedSqliteConnection yöntemini çağırın:

builder.AddKeyedSqliteConnection(name: "chat");
builder.AddKeyedSqliteConnection(name: "queue");

Daha sonra bağımlılık ekleme kullanarak SqliteConnection örneklerini alabilirsiniz. Örneğin, bağlantıyı örnek bir hizmetten almak için:

public class ExampleService(
    [FromKeyedServices("chat")] SqliteConnection chatConnection,
    [FromKeyedServices("queue")] SqliteConnection queueConnection)
{
    // Use connections...
}

Konfigürasyon

SQLite istemci tümleştirmesi, projenizin gereksinimlerini ve kurallarını karşılamak için birden çok yapılandırma yaklaşımı ve seçeneği sağlar.

Bağlantı dizesi kullanma

ConnectionStrings yapılandırma bölümünden bir bağlantı dizesi kullanırken, Microsoft.Extensions.Hosting.AspireSqliteExtensions.AddSqliteConnection yöntemini çağırırken bağlantı dizesinin adını sağlayabilirsiniz:

builder.AddSqliteConnection("sqlite");

Ardından bağlantı dizesi ConnectionStrings yapılandırma bölümünden alınır.

{
  "ConnectionStrings": {
    "sqlite": "Data Source=C:\\Database\\Location\\my-database.db"
  }
}

Yapılandırma sağlayıcılarını kullanma

SQLite istemci tümleştirmesi Microsoft.Extensions.Configurationdestekler. Microsoft.Extensions.Hosting.SqliteConnectionSettings'ı, Aspire:Sqlite:Client anahtarını kullanarak appsettings.json veya diğer yapılandırma sağlayıcılarından yükler. Bazı seçenekleri yapılandıran örnek appsettings.json:

{
  "Aspire": {
    "Sqlite": {
      "Client": {
        "ConnectionString": "Data Source=C:\\Database\\Location\\my-database.db",
        "DisableHealthCheck": true
      }
    }
  }
}