Class DbContextOptionsBuilderExtensions
- Namespace
- Trellis.EntityFrameworkCore
- Assembly
- Trellis.EntityFrameworkCore.dll
Extension methods for DbContextOptionsBuilder that register Trellis EF Core interceptors.
public static class DbContextOptionsBuilderExtensions
- Inheritance
-
DbContextOptionsBuilderExtensions
- Inherited Members
Methods
AddTrellisInterceptors(DbContextOptionsBuilder)
Adds Trellis EF Core interceptors to the DbContextOptionsBuilder.
Non-generic overload for use with DbContextOptionsBuilder directly.
public static DbContextOptionsBuilder AddTrellisInterceptors(this DbContextOptionsBuilder optionsBuilder)
Parameters
optionsBuilderDbContextOptionsBuilderThe options builder.
Returns
- DbContextOptionsBuilder
The same builder for chaining.
AddTrellisInterceptors(DbContextOptionsBuilder, TimeProvider?)
Adds Trellis EF Core interceptors to the DbContextOptionsBuilder with a custom TimeProvider.
Non-generic overload for use with DbContextOptionsBuilder directly.
public static DbContextOptionsBuilder AddTrellisInterceptors(this DbContextOptionsBuilder optionsBuilder, TimeProvider? timeProvider)
Parameters
optionsBuilderDbContextOptionsBuilderThe options builder.
timeProviderTimeProviderThe time provider to use for EntityTimestampInterceptor timestamps. Defaults to System if
null.
Returns
- DbContextOptionsBuilder
The same builder for chaining.
Exceptions
- InvalidOperationException
Thrown when
AddTrellisInterceptorshas already been called on this builder with a different TimeProvider. Library + application composition must agree on the time-provider choice.
AddTrellisInterceptors<TContext>(DbContextOptionsBuilder<TContext>)
Adds Trellis EF Core interceptors to the DbContextOptionsBuilder.
Registers the MaybeQueryInterceptor, ScalarValueQueryInterceptor,
Trellis.EntityFrameworkCore.AggregateETagInterceptor, and EntityTimestampInterceptor as singletons,
plus the Trellis.EntityFrameworkCore.MaybeEvaluatableExpressionFilterPlugin required for correct
c.Maybe == Maybe.From(value) translation. Enables natural LINQ syntax with
Maybe<T> properties, .Value access on scalar value objects, automatic
optimistic concurrency ETag generation on aggregate saves, and automatic
CreatedAt/LastModified timestamps.
public static DbContextOptionsBuilder<TContext> AddTrellisInterceptors<TContext>(this DbContextOptionsBuilder<TContext> optionsBuilder) where TContext : DbContext
Parameters
optionsBuilderDbContextOptionsBuilder<TContext>The options builder.
Returns
- DbContextOptionsBuilder<TContext>
The same builder for chaining.
Type Parameters
TContextThe DbContext type.
Examples
services.AddDbContext<MyDbContext>(options =>
options.UseSqlite(connectionString).AddTrellisInterceptors());
Remarks
Uses a static singleton interceptor instance to avoid EF Core's
ManyServiceProvidersCreatedWarning when multiple DbContext instances are created
(common in integration tests). This is the canonical registration path for Trellis EF Core
integration — registering only the interceptor via
optionsBuilder.AddInterceptors(new MaybeQueryInterceptor()) is insufficient for
Maybe.From(value) equality translation; the
Trellis.EntityFrameworkCore.MaybeEvaluatableExpressionFilterPlugin must also be installed in the per-context
internal service provider. Repeated calls on the same options builder are idempotent: each
Trellis interceptor is registered at most once, while consumer interceptors registered
separately through AddInterceptors are preserved.
AddTrellisInterceptors<TContext>(DbContextOptionsBuilder<TContext>, TimeProvider?)
Adds Trellis EF Core interceptors to the DbContextOptionsBuilder with a custom TimeProvider.
public static DbContextOptionsBuilder<TContext> AddTrellisInterceptors<TContext>(this DbContextOptionsBuilder<TContext> optionsBuilder, TimeProvider? timeProvider) where TContext : DbContext
Parameters
optionsBuilderDbContextOptionsBuilder<TContext>The options builder.
timeProviderTimeProviderThe time provider to use for EntityTimestampInterceptor timestamps. Defaults to System if
null.
Returns
- DbContextOptionsBuilder<TContext>
The same builder for chaining.
Type Parameters
TContextThe DbContext type.
Exceptions
- InvalidOperationException
Thrown when
AddTrellisInterceptorshas already been called on this builder with a different TimeProvider. Library + application composition must agree on the time-provider choice; a silent no-op would let a library's parameterless registration shadow the application's later custom-clock registration without diagnostic. Resolve by consolidating to a single composition-root call.