diff --git a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
index 52bd18e8f..daff5560b 100644
--- a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
+++ b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
@@ -71,13 +71,13 @@ void ConfigureDbContext(DbContextOptionsBuilder dbContextOptionsBuilder)
}
///
- /// Enriches a to register the as a scoped service
- /// with simplified configuration and optional OpenTelemetry instrumentation.
+ /// Configures retries, health check, logging and telemetry for the .
///
/// The type of the .
/// The to read config from and add services to.
/// An optional delegate that can be used for customizing options. It's invoked after the settings are read from the configuration.
/// Thrown if mandatory is null.
+ /// Thrown when mandatory is not registered in DI.
public static void EnrichSqliteDatabaseDbContext<[DynamicallyAccessedMembers(RequiredByEF)] TDbContext>(
this IHostApplicationBuilder builder,
Action? configureSettings = null)
@@ -93,8 +93,8 @@ void ConfigureDbContext(DbContextOptionsBuilder dbContextOptionsBuilder)
configureSettings?.Invoke(settings);
- builder.Services.AddDbContext(options =>
- options.UseSqlite(settings.ConnectionString));
+ builder.CheckDbContextRegistered();
+
ConfigureInstrumentation(builder, settings);
}
diff --git a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
index 29d6ea46f..e7737fd29 100644
--- a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
+++ b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
@@ -1,7 +1,6 @@
using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Hosting;
namespace CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests;
@@ -9,13 +8,12 @@ namespace CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests;
public class EnrichSqliteDatabaseDbContextTests
{
[Fact]
- public void EnrichSqliteDatabaseDbContext_RegistersDbContext()
+ public void EnrichSqliteDatabaseDbContext_UsesAlreadyRegisteredDbContext()
{
// Arrange
var builder = WebApplication.CreateBuilder();
- builder.Configuration.AddInMemoryCollection([
- new KeyValuePair("ConnectionStrings:DefaultConnection", "Data Source=:memory:")
- ]);
+ builder.Services.AddDbContext(options =>
+ options.UseSqlite("Data Source=:memory:"));
// Act
builder.EnrichSqliteDatabaseDbContext();
@@ -26,6 +24,17 @@ public void EnrichSqliteDatabaseDbContext_RegistersDbContext()
Assert.NotNull(dbContext);
}
+ [Fact]
+ public void EnrichSqliteDatabaseDbContext_ThrowsWhenDbContextIsNotRegistered()
+ {
+ // Arrange
+ var builder = WebApplication.CreateBuilder();
+
+ // Act & Assert
+ Assert.Throws(() =>
+ builder.EnrichSqliteDatabaseDbContext());
+ }
+
[Fact]
public void EnrichSqliteDatabaseDbContext_ThrowsWhenBuilderIsNull()
{
@@ -35,13 +44,12 @@ public void EnrichSqliteDatabaseDbContext_ThrowsWhenBuilderIsNull()
}
[Fact]
- public void EnrichSqliteDatabaseDbContext_DisablesOpenTelemetryWhenFalse()
+ public void EnrichSqliteDatabaseDbContext_DisablesOpenTelemetryWhenConfigured()
{
// Arrange
var builder = WebApplication.CreateBuilder();
- builder.Configuration.AddInMemoryCollection([
- new KeyValuePair("ConnectionStrings:DefaultConnection", "Data Source=:memory:")
- ]);
+ builder.Services.AddDbContextPool(options =>
+ options.UseSqlite("Data Source=:memory:"));
// Act
builder.EnrichSqliteDatabaseDbContext(settings => settings.DisableTracing = true);
@@ -57,9 +65,8 @@ public void EnrichSqliteDatabaseDbContext_EnablesOpenTelemetryByDefault()
{
// Arrange
var builder = WebApplication.CreateBuilder();
- builder.Configuration.AddInMemoryCollection([
- new KeyValuePair("ConnectionStrings:DefaultConnection", "Data Source=:memory:")
- ]);
+ builder.Services.AddDbContext(options =>
+ options.UseSqlite("Data Source=:memory:"));
// Act
builder.EnrichSqliteDatabaseDbContext(settings => settings.DisableTracing = false);
@@ -70,7 +77,7 @@ public void EnrichSqliteDatabaseDbContext_EnablesOpenTelemetryByDefault()
Assert.NotNull(dbContext);
// Verify OpenTelemetry services are registered (basic smoke test)
- var services = app.Services.GetServices().ToList();
- Assert.True(services.Count > 0, "Services should be registered");
+ var healthCheckService = app.Services.GetService();
+ Assert.NotNull(healthCheckService);
}
}
\ No newline at end of file