.NET Aspire Pomelo MySQL Entity Framework Component
In this article, you learn how to use the The .NET Aspire Pomelo MySQL Entity Framework Core component. The Aspire.Pomelo.EntityFrameworkCore.MySql
library is used to register a System.Data.Entity.DbContext as a singleton in the DI container for connecting to MySQL databases. It also enables connection pooling, retries, health checks, logging and telemetry.
Get started
You need a MySQL database and connection string for accessing the database. To get started with the The .NET Aspire Pomelo MySQL Entity Framework Core component, install the Aspire.Pomelo.EntityFrameworkCore.MySql NuGet package in the consuming client project.
dotnet add package Aspire.Pomelo.EntityFrameworkCore.MySql
For more information, see dotnet add package or Manage package dependencies in .NET applications.
Example usage
In the Program.cs file of your component-consuming project, call the AddMySqlDbContext extension to register a System.Data.Entity.DbContext for use via the dependency injection container.
builder.AddMySqlDbContext<MyDbContext>("mysqldb");
You can then retrieve the DbContext instance using dependency injection. For example, to retrieve the client from a service:
public class ExampleService(MyDbContext context)
{
// Use context...
}
You might also need to configure specific options of your MySQL connection, or register a DbContext
in other ways. In this case call the EnrichMySqlDbContext
extension method, for example:
var connectionString = builder.Configuration.GetConnectionString("mysqldb");
builder.Services.AddDbContextPool<MyDbContext>(
dbContextOptionsBuilder => dbContextOptionsBuilder.UseMySql(connectionString, serverVersion));
builder.EnrichMySqlDbContext<MyDbContext>();
App host usage
To model the MySql resource in the app host, install the Aspire.Hosting.MySql NuGet package in the app host project.
dotnet add package Aspire.Hosting.MySql
In your app host project, register a MySql database and consume the connection using the following methods:
var builder = DistributedApplication.CreateBuilder(args);
var mysql = builder.AddMySql("mysql");
var mysqldb = mysql.AddDatabase("mysqldb");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(mysqldb);
Configuration
The .NET Aspire Pomelo MySQL Entity Framework Core component provides multiple options to configure the database connection based on the requirements and conventions of your project.
Use a connection string
When using a connection string from the ConnectionStrings
configuration section, you can provide the name of the connection string when calling builder.AddMySqlDatabaseDbContext<TContext>()
:
builder.AddMySqlDatabaseDbContext<MyDbContext>("myConnection");
And then the connection string will be retrieved from the ConnectionStrings
configuration section:
{
"ConnectionStrings": {
"myConnection": "Server=myserver;Database=mysqldb"
}
}
The EnrichMySqlDbContext
won't make use of the ConnectionStrings
configuration section since it expects a DbContext
to be registered at the point it is called.
For more information, see the MySqlConnector documentation.
Use configuration providers
The .NET Aspire Pomelo MySQL Entity Framework Core component supports Microsoft.Extensions.Configuration. It loads the PomeloEntityFrameworkCoreMySqlSettings
from configuration by using the Aspire:Pomelo:EntityFrameworkCore:MySql
key.
The following example shows an appsettings.json that configures some of the available options:
{
"Aspire": {
"Pomelo": {
"EntityFrameworkCore": {
"MySql": {
"DisableHealthChecks": true,
"DisableTracing": true
}
}
}
}
}
Use inline delegates
You can also pass the Action<PomeloEntityFrameworkCoreMySqlSettings> configureSettings
delegate to set up some or all the options inline, for example to disable health checks from code:
builder.AddMySqlDbContext<MyDbContext>(
"mysqldb1",
static settings => settings.DisableHealthChecks = true);
or
builder.EnrichMySqlDbContext<MyDbContext>(
static settings => settings.DisableHealthChecks = true);
Health checks
By default, .NET Aspire components enable health checks for all services. For more information, see .NET Aspire components overview.
The The .NET Aspire Pomelo MySQL Entity Framework Core component registers a basic health check that checks the database connection given a TContext
. The health check is enabled by default and can be disabled using the DisableHealthChecks
property in the configuration.
Observability and telemetry
.NET Aspire components automatically set up Logging, Tracing, and Metrics configurations, which are sometimes known as the pillars of observability. For more information about component observability and telemetry, see .NET Aspire components overview. Depending on the backing service, some components may only support some of these features. For example, some components support logging and tracing, but not metrics. Telemetry features can also be disabled using the techniques presented in the Configuration section.
Logging
The The .NET Aspire Pomelo MySQL Entity Framework Core component uses the following log categories:
Microsoft.EntityFrameworkCore.Database.Command.CommandCreated
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting
Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted
Microsoft.EntityFrameworkCore.Database.Command.CommandError
Tracing
The The .NET Aspire Pomelo MySQL Entity Framework Core component will emit the following tracing activities using OpenTelemetry:
- OpenTelemetry.Instrumentation.EntityFrameworkCore
Metrics
The The .NET Aspire Pomelo MySQL Entity Framework Core component currently supports the following metrics:
- Microsoft.EntityFrameworkCore
See also
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla