Table of Contents

Class LinqToDBForEFToolsImplDefault

Namespace
LinqToDB.EntityFrameworkCore
Assembly
linq2db.EntityFrameworkCore.dll

Default EF Core - LINQ To DB integration bridge implementation.

public class LinqToDBForEFToolsImplDefault : ILinqToDBForEFTools
Inheritance
LinqToDBForEFToolsImplDefault
Implements

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 virtual bool EnableChangeTracker { get; set; }

Property Value

bool

PostgreSqlDefaultVersion

Gets or sets default provider version for PostgreSQL Server. Set to v93 dialect.

public static PostgreSQLVersion PostgreSqlDefaultVersion { get; set; }

Property Value

PostgreSQLVersion

SqlServerDefaultVersion

Gets or sets default provider version for SQL Server. Set to v2008 dialect.

public static SqlServerVersion SqlServerDefaultVersion { get; set; }

Property Value

SqlServerVersion

Methods

ClearCaches()

Force clear of internal caches.

public virtual void ClearCaches()

CompactExpression(Expression)

Compacts expression to handle big filters.

public static Expression CompactExpression(Expression expression)

Parameters

expression Expression

Returns

Expression

Compacted expression.

CreateLinqToDBDataProvider(EFProviderInfo, LinqToDBProviderInfo, EFConnectionInfo)

Creates instance of Linq To DB database provider.

protected virtual IDataProvider CreateLinqToDBDataProvider(EFProviderInfo providerInfo, LinqToDBProviderInfo provInfo, EFConnectionInfo connectionInfo)

Parameters

providerInfo EFProviderInfo

EF Core provider settings.

provInfo LinqToDBProviderInfo

Linq To DB provider settings.

connectionInfo EFConnectionInfo

EF Core connection settings.

Returns

IDataProvider

Linq To DB database provider.

CreateLogger(IDbContextOptions?)

Creates logger instance.

public virtual ILogger? CreateLogger(IDbContextOptions? options)

Parameters

options IDbContextOptions

DbContext options.

Returns

ILogger

Logger instance.

CreateMappingSchema(IModel, IMetadataReader?, IValueConverterSelector?, DataOptions)

Creates mapping schema using provided EF Core data model and metadata provider.

public virtual MappingSchema CreateMappingSchema(IModel model, IMetadataReader? metadataReader, IValueConverterSelector? convertorSelector, DataOptions dataOptions)

Parameters

model IModel

EF Core data model.

metadataReader IMetadataReader

Additional optional LINQ To DB database metadata provider.

convertorSelector IValueConverterSelector
dataOptions DataOptions

Linq To DB context options.

Returns

MappingSchema

Mapping schema for provided EF.Core model.

CreateMetadataReader(IModel?, IInfrastructure<IServiceProvider>?)

Creates metadata provider for specified EF Core data model. Default implementation uses LinqToDB.EntityFrameworkCore.EFCoreMetadataReader metadata provider.

public virtual IMetadataReader CreateMetadataReader(IModel? model, IInfrastructure<IServiceProvider>? accessor)

Parameters

model IModel

EF Core data model.

accessor IInfrastructure<IServiceProvider>

EF Core service provider.

Returns

IMetadataReader

LINQ To DB metadata provider for specified EF Core model.

CreatePostgreSqlProvider(PostgreSQLVersion, string?)

Creates Linq To DB PostgreSQL database provider instance.

protected virtual IDataProvider CreatePostgreSqlProvider(PostgreSQLVersion version, string? connectionString)

Parameters

version PostgreSQLVersion

PostgreSQL dialect.

connectionString string

Connection string.

Returns

IDataProvider

Linq To DB PostgreSQL provider instance.

CreateSqlServerProvider(SqlServerVersion, string?)

Creates Linq To DB SQL Server database provider instance.

protected virtual IDataProvider CreateSqlServerProvider(SqlServerVersion version, string? connectionString)

Parameters

version SqlServerVersion

SQL Server dialect.

connectionString string

Connection string.

Returns

IDataProvider

Linq To DB SQL Server provider instance.

DefineConvertors(MappingSchema, IModel, IValueConverterSelector?, DataOptions)

Import type conversions from EF Core model into Linq To DB mapping schema.

public virtual void DefineConvertors(MappingSchema mappingSchema, IModel model, IValueConverterSelector? convertorSelector, DataOptions dataOptions)

Parameters

mappingSchema MappingSchema

Linq To DB mapping schema.

model IModel

EF Core data mode.

convertorSelector IValueConverterSelector

Type filter.

dataOptions DataOptions

Linq To DB context options.

EvaluateExpression(Expression?)

Evaluates value of expression.

public static object? EvaluateExpression(Expression? expr)

Parameters

expr Expression

Expression to evaluate.

Returns

object

Expression value.

ExtractConnectionInfo(IDbContextOptions?)

Extracts EF Core connection information object from IDbContextOptions.

public virtual EFConnectionInfo ExtractConnectionInfo(IDbContextOptions? options)

Parameters

options IDbContextOptions

IDbContextOptions instance.

Returns

EFConnectionInfo

EF Core connection data.

ExtractModel(IDbContextOptions?)

Extracts EF Core data model instance from IDbContextOptions.

public virtual IModel? ExtractModel(IDbContextOptions? options)

Parameters

options IDbContextOptions

IDbContextOptions instance.

Returns

IModel

EF Core data model instance.

GetContextOptions(DbContext?)

Returns EF Core IDbContextOptions for specific DbContext instance.

public virtual IDbContextOptions? GetContextOptions(DbContext? context)

Parameters

context DbContext

EF Core DbContext instance.

Returns

IDbContextOptions

IDbContextOptions instance.

GetCurrentContext(IQueryable)

Extracts DbContext instance from IQueryable object. Due to unavailability of integration API in EF Core this method use reflection and could became broken after EF Core update.

public virtual 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. Could be overridden if you have issues with default detection mechanisms.

public virtual IDataProvider GetDataProvider(DataOptions options, EFProviderInfo providerInfo, EFConnectionInfo connectionInfo)

Parameters

options DataOptions

Linq To DB context options.

providerInfo EFProviderInfo

Provider information, extracted from EF Core.

connectionInfo EFConnectionInfo

Returns

IDataProvider

LINQ TO DB provider instance.

GetLinqToDBProviderInfo(EFProviderInfo)

Converts EF Core provider settings to Linq To DB provider settings.

protected virtual LinqToDBProviderInfo GetLinqToDBProviderInfo(EFProviderInfo providerInfo)

Parameters

providerInfo EFProviderInfo

EF Core provider settings.

Returns

LinqToDBProviderInfo

Linq To DB provider settings.

GetLinqToDBProviderInfo(DatabaseFacade)

Creates Linq To DB provider settings object from DatabaseFacade instance.

protected virtual LinqToDBProviderInfo? GetLinqToDBProviderInfo(DatabaseFacade database)

Parameters

database DatabaseFacade

EF Core database information object.

Returns

LinqToDBProviderInfo

Linq To DB provider settings.

GetLinqToDBProviderInfo(RelationalOptionsExtension)

Creates Linq To DB provider settings object from RelationalOptionsExtension instance.

protected virtual LinqToDBProviderInfo? GetLinqToDBProviderInfo(RelationalOptionsExtension extensions)

Parameters

extensions RelationalOptionsExtension

EF Core provider options.

Returns

LinqToDBProviderInfo

Linq To DB provider settings.

GetLinqToDBProviderInfo(DbConnection)

Creates Linq To DB provider settings object from DbConnection instance.

protected virtual LinqToDBProviderInfo? GetLinqToDBProviderInfo(DbConnection connection)

Parameters

connection DbConnection

Database connection.

Returns

LinqToDBProviderInfo

Linq To DB provider settings.

GetMappingSchema(IModel, IMetadataReader?, IValueConverterSelector?, DataOptions?)

Returns mapping schema using provided EF Core data model and metadata provider.

public virtual MappingSchema GetMappingSchema(IModel model, IMetadataReader? metadataReader, IValueConverterSelector? convertorSelector, DataOptions? dataOptions)

Parameters

model IModel

EF Core data model.

metadataReader IMetadataReader

Additional optional LINQ To DB database metadata provider.

convertorSelector IValueConverterSelector
dataOptions DataOptions

Linq To DB context options.

Returns

MappingSchema

Mapping schema for provided EF.Core model.

GetPropValue<TValue>(object, string)

Gets current property value via reflection.

protected static TValue GetPropValue<TValue>(object obj, string propName)

Parameters

obj object

Object instance

propName string

Property name

Returns

TValue

Property value.

Type Parameters

TValue

Property value type.

Exceptions

InvalidOperationException

IsQueryable(MethodCallExpression, bool)

Tests that method is IQueryable<T> extension.

public static bool IsQueryable(MethodCallExpression method, bool enumerable = true)

Parameters

method MethodCallExpression

Method to test.

enumerable bool

Allow IEnumerable<T> extensions.

Returns

bool

true if method is IQueryable<T> extension.

LogConnectionTrace(TraceInfo, ILogger)

Logs lin2db trace event to logger.

public virtual void LogConnectionTrace(TraceInfo info, ILogger logger)

Parameters

info TraceInfo

lin2db trace event.

logger ILogger

Logger instance.

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

Transforms EF Core expression tree to LINQ To DB expression. Method replaces EF Core EntityQueryable<TResult> instances with LINQ To DB GetTable<T>(IDataContext) calls.

public virtual 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.

TransformQueryRootExpression(IDataContext, QueryRootExpression)

Transforms QueryRootExpression descendants to linq2db analogue. Handles Temporal tables also.

protected virtual Expression TransformQueryRootExpression(IDataContext dc, QueryRootExpression queryRoot)

Parameters

dc IDataContext

Data context.

queryRoot QueryRootExpression

Query root expression

Returns

Expression

Transformed expression.

Unwrap(Expression?)

Removes conversions from expression.

public static Expression? Unwrap(Expression? ex)

Parameters

ex Expression

Expression.

Returns

Expression

Unwrapped expression.