Table of Contents

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

optionsBuilder DbContextOptionsBuilder

The 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

optionsBuilder DbContextOptionsBuilder

The options builder.

timeProvider TimeProvider

The time provider to use for EntityTimestampInterceptor timestamps. Defaults to System if null.

Returns

DbContextOptionsBuilder

The same builder for chaining.

Exceptions

InvalidOperationException

Thrown when AddTrellisInterceptors has 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

optionsBuilder DbContextOptionsBuilder<TContext>

The options builder.

Returns

DbContextOptionsBuilder<TContext>

The same builder for chaining.

Type Parameters

TContext

The 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

optionsBuilder DbContextOptionsBuilder<TContext>

The options builder.

timeProvider TimeProvider

The time provider to use for EntityTimestampInterceptor timestamps. Defaults to System if null.

Returns

DbContextOptionsBuilder<TContext>

The same builder for chaining.

Type Parameters

TContext

The DbContext type.

Exceptions

InvalidOperationException

Thrown when AddTrellisInterceptors has 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.