Table of Contents

Class LinqToDBForEFTools

Namespace
LinqToDB.EntityFrameworkCore
Assembly
linq2db.EntityFrameworkCore.dll

EF Core DbContext extensions to call LINQ To DB functionality.

public static class LinqToDBForEFTools
Inheritance
LinqToDBForEFTools

Properties

EnableChangeTracker

Enables attaching entities to change tracker. Entities will be attached only if AsNoTracking() is not used in query and DbContext is configured to track entities.

public static bool EnableChangeTracker { get; set; }

Property Value

bool

Implementation

Gets or sets EF Core to LINQ To DB integration bridge implementation.

public static ILinqToDBForEFTools Implementation { get; set; }

Property Value

ILinqToDBForEFTools

Methods

BulkCopyAsync<T>(DbContext, BulkCopyOptions, IAsyncEnumerable<T>, CancellationToken)

Asynchronously performs bulk insert operation.

public static Task<BulkCopyRowsCopied> BulkCopyAsync<T>(this DbContext context, BulkCopyOptions options, IAsyncEnumerable<T> source, CancellationToken cancellationToken = default) where T : class

Parameters

context DbContext

Database context.

options BulkCopyOptions

Operation options.

source IAsyncEnumerable<T>

Records to insert.

cancellationToken CancellationToken

Asynchronous operation cancellation token.

Returns

Task<BulkCopyRowsCopied>

Task with bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

BulkCopyAsync<T>(DbContext, BulkCopyOptions, IEnumerable<T>, CancellationToken)

Asynchronously performs bulk insert operation.

public static Task<BulkCopyRowsCopied> BulkCopyAsync<T>(this DbContext context, BulkCopyOptions options, IEnumerable<T> source, CancellationToken cancellationToken = default) where T : class

Parameters

context DbContext

Database context.

options BulkCopyOptions

Operation options.

source IEnumerable<T>

Records to insert.

cancellationToken CancellationToken

Asynchronous operation cancellation token.

Returns

Task<BulkCopyRowsCopied>

Task with bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

BulkCopyAsync<T>(DbContext, IAsyncEnumerable<T>, CancellationToken)

Asynchronously performs bulk insert operation.

public static Task<BulkCopyRowsCopied> BulkCopyAsync<T>(this DbContext context, IAsyncEnumerable<T> source, CancellationToken cancellationToken = default) where T : class

Parameters

context DbContext

Database context.

source IAsyncEnumerable<T>

Records to insert.

cancellationToken CancellationToken

Asynchronous operation cancellation token.

Returns

Task<BulkCopyRowsCopied>

Task with bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

BulkCopyAsync<T>(DbContext, IEnumerable<T>, CancellationToken)

Asynchronously performs bulk insert operation.

public static Task<BulkCopyRowsCopied> BulkCopyAsync<T>(this DbContext context, IEnumerable<T> source, CancellationToken cancellationToken = default) where T : class

Parameters

context DbContext

Database context.

source IEnumerable<T>

Records to insert.

cancellationToken CancellationToken

Asynchronous operation cancellation token.

Returns

Task<BulkCopyRowsCopied>

Task with bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

BulkCopyAsync<T>(DbContext, int, IAsyncEnumerable<T>, CancellationToken)

Asynchronously performs bulk insert operation.

public static Task<BulkCopyRowsCopied> BulkCopyAsync<T>(this DbContext context, int maxBatchSize, IAsyncEnumerable<T> source, CancellationToken cancellationToken = default) where T : class

Parameters

context DbContext

Database context.

maxBatchSize int

Number of rows in each batch. At the end of each batch, the rows in the batch are sent to the server.

source IAsyncEnumerable<T>

Records to insert.

cancellationToken CancellationToken

Asynchronous operation cancellation token.

Returns

Task<BulkCopyRowsCopied>

Task with bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

BulkCopyAsync<T>(DbContext, int, IEnumerable<T>, CancellationToken)

Asynchronously performs bulk insert operation.

public static Task<BulkCopyRowsCopied> BulkCopyAsync<T>(this DbContext context, int maxBatchSize, IEnumerable<T> source, CancellationToken cancellationToken = default) where T : class

Parameters

context DbContext

Database context.

maxBatchSize int

Number of rows in each batch. At the end of each batch, the rows in the batch are sent to the server.

source IEnumerable<T>

Records to insert.

cancellationToken CancellationToken

Asynchronous operation cancellation token.

Returns

Task<BulkCopyRowsCopied>

Task with bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

BulkCopy<T>(DbContext, BulkCopyOptions, IEnumerable<T>)

Performs bulk insert operation.

public static BulkCopyRowsCopied BulkCopy<T>(this DbContext context, BulkCopyOptions options, IEnumerable<T> source) where T : class

Parameters

context DbContext

Database context.

options BulkCopyOptions

Operation options.

source IEnumerable<T>

Records to insert.

Returns

BulkCopyRowsCopied

Bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

BulkCopy<T>(DbContext, IEnumerable<T>)

Performs bulk insert operation.

public static BulkCopyRowsCopied BulkCopy<T>(this DbContext context, IEnumerable<T> source) where T : class

Parameters

context DbContext

Database context.

source IEnumerable<T>

Records to insert.

Returns

BulkCopyRowsCopied

Bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

BulkCopy<T>(DbContext, int, IEnumerable<T>)

Performs bulk insert operation.

public static BulkCopyRowsCopied BulkCopy<T>(this DbContext context, int maxBatchSize, IEnumerable<T> source) where T : class

Parameters

context DbContext

Database context.

maxBatchSize int

Number of rows in each batch. At the end of each batch, the rows in the batch are sent to the server.

source IEnumerable<T>

Records to insert.

Returns

BulkCopyRowsCopied

Bulk insert operation status.

Type Parameters

T

Mapping type of inserted record.

ClearCaches()

Clears internal caches

public static void ClearCaches()

CreateLinq2DbConnectionDetached(DbContext)

Creates LINQ To DB DataConnection instance that creates new database connection using connection information from EF Core DbContext instance.

[Obsolete("Use CreateLinqToDBConnectionDetached overload.")]
public static DataConnection CreateLinq2DbConnectionDetached(this DbContext context)

Parameters

context DbContext

EF Core DbContext instance.

Returns

DataConnection

LINQ To DB DataConnection instance.

CreateLinqToDBConnection(DbContext, IDbContextTransaction?)

Creates LINQ To DB DataConnection instance, attached to provided EF Core DbContext instance connection and transaction.

public static DataConnection CreateLinqToDBConnection(this DbContext context, IDbContextTransaction? transaction = null)

Parameters

context DbContext

EF Core DbContext instance.

transaction IDbContextTransaction

Optional transaction instance, to which created connection should be attached. If not specified, will use current DbContext transaction if it available.

Returns

DataConnection

LINQ To DB DataConnection instance.

CreateLinqToDBConnection(DbContextOptions)

Creates new LINQ To DB DataConnection instance using connectivity information from EF Core DbContextOptions instance.

public static DataConnection CreateLinqToDBConnection(this DbContextOptions options)

Parameters

options DbContextOptions

EF Core DbContextOptions instance.

Returns

DataConnection

New LINQ To DB DataConnection instance.

CreateLinqToDBConnectionDetached(DbContext)

Creates LINQ To DB DataConnection instance that creates new database connection using connection information from EF Core DbContext instance.

public static DataConnection CreateLinqToDBConnectionDetached(this DbContext context)

Parameters

context DbContext

EF Core DbContext instance.

Returns

DataConnection

LINQ To DB DataConnection instance.

CreateLinqToDBContext(DbContext, IDbContextTransaction?)

Creates Linq To DB data context for EF Core database context.

public static IDataContext CreateLinqToDBContext(this DbContext context, IDbContextTransaction? transaction = null)

Parameters

context DbContext

EF Core database context.

transaction IDbContextTransaction

Transaction instance.

Returns

IDataContext

Linq To DB data context.

CreateLinqToDbConnection(DbContext, IDbContextTransaction?)

Creates LINQ To DB DataConnection instance, attached to provided EF Core DbContext instance connection and transaction.

[Obsolete("Use CreateLinqToDBConnection overload.")]
public static DataConnection CreateLinqToDbConnection(this DbContext context, IDbContextTransaction? transaction = null)

Parameters

context DbContext

EF Core DbContext instance.

transaction IDbContextTransaction

Optional transaction instance, to which created connection should be attached. If not specified, will use current DbContext transaction if it available.

Returns

DataConnection

LINQ To DB DataConnection instance.

CreateLinqToDbConnection(DbContextOptions)

Creates new LINQ To DB DataConnection instance using connectivity information from EF Core DbContextOptions instance.

[Obsolete("Use CreateLinqToDBConnection overload.")]
public static DataConnection CreateLinqToDbConnection(this DbContextOptions options)

Parameters

options DbContextOptions

EF Core DbContextOptions instance.

Returns

DataConnection

New LINQ To DB DataConnection instance.

CreateLinqToDbContext(DbContext, IDbContextTransaction?)

Creates Linq To DB data context for EF Core database context.

[Obsolete("Use CreateLinqToDBContext overload.")]
public static IDataContext CreateLinqToDbContext(this DbContext context, IDbContextTransaction? transaction = null)

Parameters

context DbContext

EF Core database context.

transaction IDbContextTransaction

Transaction instance.

Returns

IDataContext

Linq To DB data context.

CreateLogger(IDbContextOptions?)

Creates logger instance.

public static ILogger? CreateLogger(IDbContextOptions? options)

Parameters

options IDbContextOptions

DbContext options.

Returns

ILogger

Logger instance.

GetConnectionInfo(EFProviderInfo)

Extracts database connection information from EF Core provider data.

public static EFConnectionInfo GetConnectionInfo(EFProviderInfo info)

Parameters

info EFProviderInfo

EF Core database provider data.

Returns

EFConnectionInfo

Database connection information.

GetContextOptions(DbContext)

Returns EF Core DbContextOptions for specific DbContext instance.

public static IDbContextOptions? GetContextOptions(DbContext context)

Parameters

context DbContext

EF Core DbContext instance.

Returns

IDbContextOptions

DbContextOptions instance.

GetCurrentContext(IQueryable)

Extracts DbContext instance from IQueryable object.

public static DbContext? GetCurrentContext(IQueryable query)

Parameters

query IQueryable

EF Core query.

Returns

DbContext

Current DbContext instance.

GetDataProvider(DataOptions, EFProviderInfo, EFConnectionInfo)

Returns LINQ To DB provider, based on provider data from EF Core.

public static IDataProvider GetDataProvider(DataOptions options, EFProviderInfo info, EFConnectionInfo connectionInfo)

Parameters

options DataOptions

Linq To DB context options.

info EFProviderInfo

EF Core provider information.

connectionInfo EFConnectionInfo

Database connection information.

Returns

IDataProvider

LINQ TO DB provider instance.

GetEFProviderInfo(DbContext)

Returns EF Core database provider information for specific DbContext instance.

public static EFProviderInfo GetEFProviderInfo(DbContext context)

Parameters

context DbContext

EF Core DbContext instance.

Returns

EFProviderInfo

EF Core provider information.

GetEFProviderInfo(DbContextOptions)

Returns EF Core database provider information for specific DbContextOptions instance.

public static EFProviderInfo GetEFProviderInfo(DbContextOptions options)

Parameters

options DbContextOptions

EF Core DbContextOptions instance.

Returns

EFProviderInfo

EF Core provider information.

GetEFProviderInfo(DbConnection)

Returns EF Core database provider information for specific DbConnection instance.

public static EFProviderInfo GetEFProviderInfo(DbConnection connection)

Parameters

connection DbConnection

EF Core DbConnection instance.

Returns

EFProviderInfo

EF Core provider information.

GetLinqToDBOptions(DbContext)

Returns Linq To DB context options from EF Context.

public static DataOptions? GetLinqToDBOptions(this DbContext context)

Parameters

context DbContext

Returns

DataOptions

Db context object.

GetLinqToDBOptions(IDbContextOptions)

Returns Linq To DB context options from EF Context options.

public static DataOptions? GetLinqToDBOptions(this IDbContextOptions contextOptions)

Parameters

contextOptions IDbContextOptions

Returns

DataOptions

Db context options.

GetMappingSchema(IModel, IInfrastructure<IServiceProvider>?, DataOptions?)

Creates mapping schema using provided EF Core data model.

public static MappingSchema GetMappingSchema(IModel model, IInfrastructure<IServiceProvider>? accessor, DataOptions? dataOptions)

Parameters

model IModel

EF Core data model.

accessor IInfrastructure<IServiceProvider>

EF Core service provider.

dataOptions DataOptions

Linq To DB context options.

Returns

MappingSchema

Mapping schema for provided EF Core model.

GetMetadataReader(IModel?, IInfrastructure<IServiceProvider>?)

Creates or return existing metadata provider for provided EF Core data model. If model is null, empty metadata provider will be returned.

public static IMetadataReader? GetMetadataReader(IModel? model, IInfrastructure<IServiceProvider>? accessor)

Parameters

model IModel

EF Core data model instance. Could be null.

accessor IInfrastructure<IServiceProvider>

EF Core service provider.

Returns

IMetadataReader

LINQ To DB metadata provider.

GetModel(DbContextOptions?)

Extracts EF Core data model instance from DbContextOptions.

public static IModel? GetModel(DbContextOptions? options)

Parameters

options DbContextOptions

DbContextOptions instance.

Returns

IModel

EF Core data model instance.

GetTable<T>(DbContext)

Returns queryable source for specified mapping class for current DBContext, mapped to database table or view.

public static ITable<T> GetTable<T>(this DbContext context) where T : class

Parameters

context DbContext

Returns

ITable<T>

Queryable source.

Type Parameters

T

Mapping class type.

Initialize()

Initializes integration of LINQ To DB with EF Core.

public static void Initialize()

Into<T>(DbContext, ITable<T>)

Starts LINQ query definition for insert operation.

public static IValueInsertable<T> Into<T>(this DbContext context, ITable<T> target) where T : notnull

Parameters

context DbContext

Database context.

target ITable<T>

Target table.

Returns

IValueInsertable<T>

Insertable source query.

Type Parameters

T

Target table mapping class.

ToLinqToDBTable<T>(DbSet<T>)

Converts EF.Core DbSet<TEntity> instance to LINQ To DB ITable<T> instance.

public static ITable<T> ToLinqToDBTable<T>(this DbSet<T> dbSet) where T : class

Parameters

dbSet DbSet<T>

EF.Core DbSet<TEntity> instance.

Returns

ITable<T>

LINQ To DB ITable<T> instance.

Type Parameters

T

Mapping entity type.

ToLinqToDBTable<T>(DbSet<T>, IDataContext)

Converts EF.Core DbSet<TEntity> instance to LINQ To DB ITable<T> instance using existing LINQ To DB IDataContext instance.

public static ITable<T> ToLinqToDBTable<T>(this DbSet<T> dbSet, IDataContext dataContext) where T : class

Parameters

dbSet DbSet<T>

EF.Core DbSet<TEntity> instance.

dataContext IDataContext

LINQ To DB data context instance.

Returns

ITable<T>

LINQ To DB ITable<T> instance.

Type Parameters

T

Mapping entity type.

ToLinqToDB<T>(IQueryable<T>)

Converts EF Core's query to LINQ To DB query and attach it to current EF Core connection.

public static IQueryable<T> ToLinqToDB<T>(this IQueryable<T> query)

Parameters

query IQueryable<T>

EF Core query.

Returns

IQueryable<T>

LINQ To DB query, attached to current EF Core connection.

Type Parameters

T

Entity type.

ToLinqToDB<T>(IQueryable<T>, IDataContext)

Converts EF Core's query to LINQ To DB query and attach it to provided LINQ To DB IDataContext.

public static IQueryable<T> ToLinqToDB<T>(this IQueryable<T> query, IDataContext dc)

Parameters

query IQueryable<T>

EF Core query.

dc IDataContext

LINQ To DB IDataContext to use with provided query.

Returns

IQueryable<T>

LINQ To DB query, attached to provided IDataContext.

Type Parameters

T

Entity type.

TransformExpression(Expression, IDataContext?, DbContext?, IModel?)

Transforms EF Core expression tree to LINQ To DB expression.

public static Expression TransformExpression(Expression expression, IDataContext? dc, DbContext? ctx, IModel? model)

Parameters

expression Expression

EF Core expression tree.

dc IDataContext

LINQ To DB IDataContext instance.

ctx DbContext

Optional DbContext instance.

model IModel

EF Core data model instance.

Returns

Expression

Transformed expression.

UseLinqToDB(DbContextOptionsBuilder, Action<LinqToDBContextOptionsBuilder>?)

Registers custom options related to LinqToDB provider.

public static DbContextOptionsBuilder UseLinqToDB(this DbContextOptionsBuilder optionsBuilder, Action<LinqToDBContextOptionsBuilder>? linq2dbOptionsAction = null)

Parameters

optionsBuilder DbContextOptionsBuilder
linq2dbOptionsAction Action<LinqToDBContextOptionsBuilder>

Custom options action.

Returns

DbContextOptionsBuilder

UseLinqToDb(DbContextOptionsBuilder, Action<LinqToDBContextOptionsBuilder>?)

Registers custom options related to LinqToDB provider.

[Obsolete("Use UseLinqToDB overload.")]
public static DbContextOptionsBuilder UseLinqToDb(this DbContextOptionsBuilder optionsBuilder, Action<LinqToDBContextOptionsBuilder>? linq2dbOptionsAction = null)

Parameters

optionsBuilder DbContextOptionsBuilder
linq2dbOptionsAction Action<LinqToDBContextOptionsBuilder>

Custom options action.

Returns

DbContextOptionsBuilder