From 2e63b5da05f9a40356735f867014a250d4b249af Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 5 Sep 2025 05:09:15 +0000
Subject: [PATCH 1/5] Initial plan
From 9c4c3268164edd720859fb3fad1a993eb06178ca Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 5 Sep 2025 05:22:32 +0000
Subject: [PATCH 2/5] Add EnrichSqliteDatabaseDbContext extension method for
WebApplicationBuilder
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
---
Directory.Packages.props | 1 +
.../AspireEFSqliteExtensions.cs | 52 ++++++++++
...icrosoft.EntityFrameworkCore.Sqlite.csproj | 1 +
...ft.EntityFrameworkCore.Sqlite.Tests.csproj | 4 +
.../EnrichSqliteDatabaseDbContextTests.cs | 94 +++++++++++++++++++
5 files changed, 152 insertions(+)
create mode 100644 tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 93a899dd3..60369c11c 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -53,6 +53,7 @@
+
diff --git a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
index 126d476a9..fca5baa2d 100644
--- a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
+++ b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
@@ -73,3 +73,55 @@ void ConfigureDbContext(DbContextOptionsBuilder dbContextOptionsBuilder)
}
}
}
+
+namespace Microsoft.AspNetCore.Builder;
+
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using System.Diagnostics.CodeAnalysis;
+
+///
+/// Extension methods for configuring Sqlite with Entity Framework Core on WebApplicationBuilder.
+///
+public static class AspireEFSqliteWebExtensions
+{
+ ///
+ /// Enriches a to register the as a scoped service
+ /// with simplified configuration and optional OpenTelemetry instrumentation.
+ ///
+ /// The type of the .
+ /// The to read config from and add services to.
+ /// The name used to retrieve the connection string from the ConnectionStrings configuration section. Defaults to "DefaultConnection".
+ /// Whether to enable OpenTelemetry instrumentation for Entity Framework Core. Defaults to true.
+ /// The so that additional calls can be chained.
+ /// Thrown if mandatory is null.
+ /// Thrown when the connection string is not found or is empty.
+ public static WebApplicationBuilder EnrichSqliteDatabaseDbContext<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors | DynamicallyAccessedMemberTypes.NonPublicConstructors | DynamicallyAccessedMemberTypes.PublicProperties)] TDbContext>(
+ this WebApplicationBuilder builder,
+ string? connectionStringName = "DefaultConnection",
+ bool enableOpenTelemetry = true)
+ where TDbContext : DbContext
+ {
+ ArgumentNullException.ThrowIfNull(builder);
+ ArgumentException.ThrowIfNullOrEmpty(connectionStringName);
+
+ var connectionString = builder.Configuration.GetConnectionString(connectionStringName);
+ if (string.IsNullOrEmpty(connectionString))
+ {
+ throw new InvalidOperationException($"Connection string '{connectionStringName}' not found or empty.");
+ }
+
+ builder.Services.AddDbContext(options =>
+ options.UseSqlite(connectionString));
+
+ // TODO: Add OpenTelemetry support once we can verify package references work
+ // if (enableOpenTelemetry)
+ // {
+ // builder.Services.AddOpenTelemetry()
+ // .WithTracing(tracing => tracing
+ // .AddEntityFrameworkCoreInstrumentation());
+ // }
+
+ return builder;
+ }
+}
diff --git a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.csproj b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.csproj
index 84fbc79dc..809a2dcd9 100644
--- a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.csproj
+++ b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.csproj
@@ -11,6 +11,7 @@
+
diff --git a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj
index f12f057fb..ef9b3102d 100644
--- a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj
+++ b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj
@@ -4,4 +4,8 @@
+
+
+
+
diff --git a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
new file mode 100644
index 000000000..5a9aba863
--- /dev/null
+++ b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
@@ -0,0 +1,94 @@
+using Microsoft.AspNetCore.Builder;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+namespace CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests;
+
+public class EnrichSqliteDatabaseDbContextTests
+{
+ [Fact]
+ public void EnrichSqliteDatabaseDbContext_RegistersDbContext()
+ {
+ // Arrange
+ var builder = WebApplication.CreateBuilder();
+ builder.Configuration.AddInMemoryCollection([
+ new KeyValuePair("ConnectionStrings:DefaultConnection", "Data Source=:memory:")
+ ]);
+
+ // Act
+ builder.EnrichSqliteDatabaseDbContext();
+
+ // Assert
+ var app = builder.Build();
+ var dbContext = app.Services.GetRequiredService();
+ Assert.NotNull(dbContext);
+ }
+
+ [Fact]
+ public void EnrichSqliteDatabaseDbContext_WithCustomConnectionStringName()
+ {
+ // Arrange
+ var builder = WebApplication.CreateBuilder();
+ builder.Configuration.AddInMemoryCollection([
+ new KeyValuePair("ConnectionStrings:CustomConnection", "Data Source=:memory:")
+ ]);
+
+ // Act
+ builder.EnrichSqliteDatabaseDbContext("CustomConnection");
+
+ // Assert
+ var app = builder.Build();
+ var dbContext = app.Services.GetRequiredService();
+ Assert.NotNull(dbContext);
+ }
+
+ [Fact]
+ public void EnrichSqliteDatabaseDbContext_ThrowsWhenBuilderIsNull()
+ {
+ // Act & Assert
+ Assert.Throws(() =>
+ AspireEFSqliteWebExtensions.EnrichSqliteDatabaseDbContext(null!));
+ }
+
+ [Fact]
+ public void EnrichSqliteDatabaseDbContext_ThrowsWhenConnectionStringNameIsEmpty()
+ {
+ // Arrange
+ var builder = WebApplication.CreateBuilder();
+
+ // Act & Assert
+ Assert.Throws(() =>
+ builder.EnrichSqliteDatabaseDbContext(""));
+ }
+
+ [Fact]
+ public void EnrichSqliteDatabaseDbContext_ThrowsWhenConnectionStringNotFound()
+ {
+ // Arrange
+ var builder = WebApplication.CreateBuilder();
+
+ // Act & Assert
+ Assert.Throws(() =>
+ builder.EnrichSqliteDatabaseDbContext("NonExistentConnection"));
+ }
+
+ [Fact]
+ public void EnrichSqliteDatabaseDbContext_DisablesOpenTelemetryWhenFalse()
+ {
+ // Arrange
+ var builder = WebApplication.CreateBuilder();
+ builder.Configuration.AddInMemoryCollection([
+ new KeyValuePair("ConnectionStrings:DefaultConnection", "Data Source=:memory:")
+ ]);
+
+ // Act
+ builder.EnrichSqliteDatabaseDbContext(enableOpenTelemetry: false);
+
+ // Assert - The test passes if no exceptions are thrown and DbContext is registered
+ var app = builder.Build();
+ var dbContext = app.Services.GetRequiredService();
+ Assert.NotNull(dbContext);
+ }
+}
\ No newline at end of file
From 436d2da94042deb21a76cfbbd1f53d7d1e06b34e Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 5 Sep 2025 05:24:52 +0000
Subject: [PATCH 3/5] Complete EnrichSqliteDatabaseDbContext with OpenTelemetry
support
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
---
.../AspireEFSqliteExtensions.cs | 14 +++++++-------
...ire.Microsoft.EntityFrameworkCore.Sqlite.csproj | 2 ++
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
index fca5baa2d..7d043ba58 100644
--- a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
+++ b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/AspireEFSqliteExtensions.cs
@@ -78,6 +78,7 @@ namespace Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
+using OpenTelemetry.Trace;
using System.Diagnostics.CodeAnalysis;
///
@@ -114,13 +115,12 @@ public static class AspireEFSqliteWebExtensions
builder.Services.AddDbContext(options =>
options.UseSqlite(connectionString));
- // TODO: Add OpenTelemetry support once we can verify package references work
- // if (enableOpenTelemetry)
- // {
- // builder.Services.AddOpenTelemetry()
- // .WithTracing(tracing => tracing
- // .AddEntityFrameworkCoreInstrumentation());
- // }
+ if (enableOpenTelemetry)
+ {
+ builder.Services.AddOpenTelemetry()
+ .WithTracing(tracing => tracing
+ .AddEntityFrameworkCoreInstrumentation());
+ }
return builder;
}
diff --git a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.csproj b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.csproj
index 809a2dcd9..052948a88 100644
--- a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.csproj
+++ b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.csproj
@@ -12,6 +12,8 @@
+
+
From af1deffd5f8f2f203cbd013d2b480392ca8f6e08 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 5 Sep 2025 05:26:42 +0000
Subject: [PATCH 4/5] Add documentation and complete test coverage for
EnrichSqliteDatabaseDbContext
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
---
.../README.md | 23 +++++++++++++++++++
.../EnrichSqliteDatabaseDbContextTests.cs | 22 ++++++++++++++++++
2 files changed, 45 insertions(+)
diff --git a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md
index 2e2f022bf..7863962aa 100644
--- a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md
+++ b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md
@@ -19,12 +19,35 @@ dotnet add package CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite
### Example usage
+#### Option 1: Using IHostApplicationBuilder (Traditional Aspire Pattern)
+
In the _Program.cs_ file of your project, call the `AddSqliteDbContext` extension method to register the `TDbContext` implementation in the DI container. This method takes the connection name as a parameter:
```csharp
builder.AddSqliteDbContext("sqlite");
```
+#### Option 2: Using WebApplicationBuilder (New Simplified Pattern)
+
+For ASP.NET Core applications, you can use the simplified `EnrichSqliteDatabaseDbContext` extension method:
+
+```csharp
+// Basic usage with default connection string name "DefaultConnection"
+builder.EnrichSqliteDatabaseDbContext();
+
+// With custom connection string name
+builder.EnrichSqliteDatabaseDbContext("MyConnection");
+
+// Disable OpenTelemetry instrumentation
+builder.EnrichSqliteDatabaseDbContext(enableOpenTelemetry: false);
+```
+
+The `EnrichSqliteDatabaseDbContext` method provides:
+- **Simplified API**: Works directly with `WebApplicationBuilder`
+- **Default connection string**: Uses "DefaultConnection" by default
+- **OpenTelemetry integration**: Automatically adds EF Core instrumentation for distributed tracing
+- **Parameter validation**: Proper error handling for missing connection strings
+
Then, in your service, inject `TDbContext` and use it to interact with the database:
```csharp
diff --git a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
index 5a9aba863..796a4f762 100644
--- a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
+++ b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
@@ -91,4 +91,26 @@ public void EnrichSqliteDatabaseDbContext_DisablesOpenTelemetryWhenFalse()
var dbContext = app.Services.GetRequiredService();
Assert.NotNull(dbContext);
}
+
+ [Fact]
+ public void EnrichSqliteDatabaseDbContext_EnablesOpenTelemetryByDefault()
+ {
+ // Arrange
+ var builder = WebApplication.CreateBuilder();
+ builder.Configuration.AddInMemoryCollection([
+ new KeyValuePair("ConnectionStrings:DefaultConnection", "Data Source=:memory:")
+ ]);
+
+ // Act
+ builder.EnrichSqliteDatabaseDbContext();
+
+ // Assert - The test passes if no exceptions are thrown and OpenTelemetry services are registered
+ var app = builder.Build();
+ var dbContext = app.Services.GetRequiredService();
+ Assert.NotNull(dbContext);
+
+ // Verify OpenTelemetry services are registered (basic smoke test)
+ var services = app.Services.GetServices
diff --git a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md
index 7863962aa..fe18958ea 100644
--- a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md
+++ b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/README.md
@@ -43,10 +43,11 @@ builder.EnrichSqliteDatabaseDbContext(enableOpenTelemetry: fals
```
The `EnrichSqliteDatabaseDbContext` method provides:
-- **Simplified API**: Works directly with `WebApplicationBuilder`
-- **Default connection string**: Uses "DefaultConnection" by default
-- **OpenTelemetry integration**: Automatically adds EF Core instrumentation for distributed tracing
-- **Parameter validation**: Proper error handling for missing connection strings
+
+- **Simplified API**: Works directly with `WebApplicationBuilder`
+- **Default connection string**: Uses "DefaultConnection" by default
+- **OpenTelemetry integration**: Automatically adds EF Core instrumentation for distributed tracing
+- **Parameter validation**: Proper error handling for missing connection strings
Then, in your service, inject `TDbContext` and use it to interact with the database:
@@ -65,3 +66,4 @@ public class MyService(BloggingContext context)
## Feedback & contributing
https://github.com/CommunityToolkit/Aspire
+
diff --git a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/SqliteEntityFrameworkCoreSettings.cs b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/SqliteEntityFrameworkCoreSettings.cs
index 511c1d947..9fa450adc 100644
--- a/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/SqliteEntityFrameworkCoreSettings.cs
+++ b/src/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite/SqliteEntityFrameworkCoreSettings.cs
@@ -22,4 +22,10 @@ public sealed class SqliteEntityFrameworkCoreSettings
/// Gets or sets the default timeout for the database operations.
///
public int DefaultTimeout { get; set; }
+
+ ///
+ /// Gets or sets a boolean value that indicates whether tracing is disabled or not.
+ ///
+ public bool DisableTracing { get; set; }
+
}
\ No newline at end of file
diff --git a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj
index ef9b3102d..f12f057fb 100644
--- a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj
+++ b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests.csproj
@@ -4,8 +4,4 @@
-
-
-
-
diff --git a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
index 796a4f762..29d6ea46f 100644
--- a/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
+++ b/tests/CommunityToolkit.Aspire.Microsoft.EntityFrameworkCore.Sqlite.Tests/EnrichSqliteDatabaseDbContextTests.cs
@@ -26,52 +26,12 @@ public void EnrichSqliteDatabaseDbContext_RegistersDbContext()
Assert.NotNull(dbContext);
}
- [Fact]
- public void EnrichSqliteDatabaseDbContext_WithCustomConnectionStringName()
- {
- // Arrange
- var builder = WebApplication.CreateBuilder();
- builder.Configuration.AddInMemoryCollection([
- new KeyValuePair("ConnectionStrings:CustomConnection", "Data Source=:memory:")
- ]);
-
- // Act
- builder.EnrichSqliteDatabaseDbContext("CustomConnection");
-
- // Assert
- var app = builder.Build();
- var dbContext = app.Services.GetRequiredService();
- Assert.NotNull(dbContext);
- }
-
[Fact]
public void EnrichSqliteDatabaseDbContext_ThrowsWhenBuilderIsNull()
{
// Act & Assert
- Assert.Throws(() =>
- AspireEFSqliteWebExtensions.EnrichSqliteDatabaseDbContext(null!));
- }
-
- [Fact]
- public void EnrichSqliteDatabaseDbContext_ThrowsWhenConnectionStringNameIsEmpty()
- {
- // Arrange
- var builder = WebApplication.CreateBuilder();
-
- // Act & Assert
- Assert.Throws(() =>
- builder.EnrichSqliteDatabaseDbContext(""));
- }
-
- [Fact]
- public void EnrichSqliteDatabaseDbContext_ThrowsWhenConnectionStringNotFound()
- {
- // Arrange
- var builder = WebApplication.CreateBuilder();
-
- // Act & Assert
- Assert.Throws(() =>
- builder.EnrichSqliteDatabaseDbContext("NonExistentConnection"));
+ Assert.Throws(() =>
+ AspireEFSqliteExtensions.EnrichSqliteDatabaseDbContext(null!));
}
[Fact]
@@ -84,7 +44,7 @@ public void EnrichSqliteDatabaseDbContext_DisablesOpenTelemetryWhenFalse()
]);
// Act
- builder.EnrichSqliteDatabaseDbContext(enableOpenTelemetry: false);
+ builder.EnrichSqliteDatabaseDbContext(settings => settings.DisableTracing = true);
// Assert - The test passes if no exceptions are thrown and DbContext is registered
var app = builder.Build();
@@ -102,15 +62,15 @@ public void EnrichSqliteDatabaseDbContext_EnablesOpenTelemetryByDefault()
]);
// Act
- builder.EnrichSqliteDatabaseDbContext();
+ builder.EnrichSqliteDatabaseDbContext(settings => settings.DisableTracing = false);
// Assert - The test passes if no exceptions are thrown and OpenTelemetry services are registered
var app = builder.Build();
var dbContext = app.Services.GetRequiredService();
Assert.NotNull(dbContext);
-
+
// Verify OpenTelemetry services are registered (basic smoke test)
- var services = app.Services.GetServices