Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add to the MicrosoftEntityFrameworkCoreSqlServerSettings the property DisableDbContextPool #7023

Open
luizfbicalho opened this issue Jan 4, 2025 · 0 comments

Comments

@luizfbicalho
Copy link

luizfbicalho commented Jan 4, 2025

Background and Motivation

The only option in the DbContext creation that is not optional is the DbContext Pool, but in my case, I have scoped interceptors related to the DbContext and would be easier to disable it than to create the dbcontexts in a way, and then enrich them,

Proposed API

namespace Aspire.Microsoft.EntityFrameworkCore.SqlServer;

/// <summary>
/// Provides the client configuration settings for connecting to a SQL Server database using EntityFrameworkCore.
/// </summary>
public sealed class MicrosoftEntityFrameworkCoreSqlServerSettings
{
    /// <summary>
    /// The connection string of the SQL server database to connect to.
    /// </summary>
    public string? ConnectionString { get; set; }

    /// <summary>
    /// Gets or sets whether retries should be disabled.
    /// </summary>
    /// <value>
    /// The default value is <see langword="false"/>.
    /// </value>
    public bool DisableRetry { get; set; }

    /// <summary>
    /// Gets or sets a boolean value that indicates whether the database health check is disabled or not.
    /// </summary>
    /// <value>
    /// The default value is <see langword="false"/>.
    /// </value>
    public bool DisableHealthChecks { get; set; }

    /// <summary>
    /// Gets or sets a boolean value that indicates whether the OpenTelemetry tracing is disabled or not.
    /// </summary>
    /// <value>
    /// The default value is <see langword="false"/>.
    /// </value>
    public bool DisableTracing { get; set; }

+    /// <summary>
+    /// Gets or sets a boolean value that indicates whether the DbContextPool is disabled or not.
+    /// </summary>
+    /// <value>
+    /// The default value is <see langword="false"/>.
+    /// </value>
+    public bool DisableDbContextPool { get; set; }

    /// <summary>
    /// Gets or sets the time in seconds to wait for the command to execute.
    /// </summary>
    public int? CommandTimeout { get; set; }
}

Usage Examples

builder.AddSqlServerDbContext<ModelContext>("sqldb-model", settings => { settings.DisableDbContextPool = true; }, configureDbContextOptions: (options) =>
{
});

Alternative Designs

Risks

The default should be false to minimize the risk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant