@@ -224,11 +224,12 @@ public static MappingSchema GetMappingSchema(IModel model,
224224 /// </summary>
225225 /// <param name="expression">EF.Core expression tree.</param>
226226 /// <param name="dc">LINQ To DB <see cref="IDataContext"/> instance.</param>
227+ /// <param name="ctx">Optional DbContext instance.</param>
227228 /// <param name="model">EF.Core data model instance.</param>
228229 /// <returns>Transformed expression.</returns>
229- public static Expression TransformExpression ( Expression expression , IDataContext dc , IModel model )
230+ public static Expression TransformExpression ( Expression expression , IDataContext dc , DbContext ctx , IModel model )
230231 {
231- return Implementation . TransformExpression ( expression , dc , model ) ;
232+ return Implementation . TransformExpression ( expression , dc , ctx , model ) ;
232233 }
233234
234235 /// <summary>
@@ -257,17 +258,17 @@ public static DataConnection CreateLinqToDbConnection(this DbContext context,
257258 {
258259 var dbTrasaction = transaction . GetDbTransaction ( ) ;
259260 if ( provider . IsCompatibleConnection ( dbTrasaction . Connection ) )
260- dc = new LinqToDBForEFToolsDataConnection ( provider , dbTrasaction , context . Model , TransformExpression ) ;
261+ dc = new LinqToDBForEFToolsDataConnection ( context , provider , dbTrasaction , context . Model , TransformExpression ) ;
261262 }
262263
263264 if ( dc == null )
264265 {
265266 var dbConnection = context . Database . GetDbConnection ( ) ;
266267 if ( provider . IsCompatibleConnection ( dbConnection ) )
267- dc = new LinqToDBForEFToolsDataConnection ( provider , dbConnection , context . Model , TransformExpression ) ;
268+ dc = new LinqToDBForEFToolsDataConnection ( context , provider , dbConnection , context . Model , TransformExpression ) ;
268269 else
269270 {
270- dc = new LinqToDBForEFToolsDataConnection ( provider , connectionInfo . ConnectionString , context . Model , TransformExpression ) ;
271+ dc = new LinqToDBForEFToolsDataConnection ( context , provider , connectionInfo . ConnectionString , context . Model , TransformExpression ) ;
271272 }
272273 }
273274
@@ -309,18 +310,18 @@ public static IDataContext CreateLinqToDbContext(this DbContext context,
309310 {
310311 var dbTransaction = transaction . GetDbTransaction ( ) ;
311312 if ( provider . IsCompatibleConnection ( dbTransaction . Connection ) )
312- dc = new LinqToDBForEFToolsDataConnection ( provider , dbTransaction , context . Model , TransformExpression ) ;
313+ dc = new LinqToDBForEFToolsDataConnection ( context , provider , dbTransaction , context . Model , TransformExpression ) ;
313314 }
314315
315316 if ( dc == null )
316317 {
317318 var dbConnection = context . Database . GetDbConnection ( ) ;
318319 if ( provider . IsCompatibleConnection ( dbConnection ) )
319- dc = new LinqToDBForEFToolsDataConnection ( provider , context . Database . GetDbConnection ( ) , context . Model , TransformExpression ) ;
320+ dc = new LinqToDBForEFToolsDataConnection ( context , provider , context . Database . GetDbConnection ( ) , context . Model , TransformExpression ) ;
320321 else
321322 {
322323 // special case when we have to create data connection by itself
323- var dataContext = new LinqToDBForEFToolsDataContext ( provider , connectionInfo . ConnectionString , context . Model , TransformExpression ) ;
324+ var dataContext = new LinqToDBForEFToolsDataContext ( context , provider , connectionInfo . ConnectionString , context . Model , TransformExpression ) ;
324325
325326 if ( mappingSchema != null )
326327 dataContext . MappingSchema = mappingSchema ;
@@ -355,7 +356,7 @@ public static DataConnection CreateLinq2DbConnectionDetached([JetBrains.Annotati
355356 var connectionInfo = GetConnectionInfo ( info ) ;
356357 var dataProvider = GetDataProvider ( info , connectionInfo ) ;
357358
358- var dc = new LinqToDBForEFToolsDataConnection ( dataProvider , connectionInfo . ConnectionString , context . Model , TransformExpression ) ;
359+ var dc = new LinqToDBForEFToolsDataConnection ( context , dataProvider , connectionInfo . ConnectionString , context . Model , TransformExpression ) ;
359360 var logger = CreateLogger ( info . Options ) ;
360361 if ( logger != null )
361362 dc . OnTraceConnection = t => Implementation . LogConnectionTrace ( t , logger ) ;
@@ -419,9 +420,9 @@ public static DataConnection CreateLinqToDbConnection(this DbContextOptions opti
419420 var model = GetModel ( options ) ;
420421
421422 if ( connectionInfo . Connection != null )
422- dc = new LinqToDBForEFToolsDataConnection ( dataProvider , connectionInfo . Connection , model , TransformExpression ) ;
423+ dc = new LinqToDBForEFToolsDataConnection ( null , dataProvider , connectionInfo . Connection , model , TransformExpression ) ;
423424 else if ( connectionInfo . ConnectionString != null )
424- dc = new LinqToDBForEFToolsDataConnection ( dataProvider , connectionInfo . ConnectionString , model , TransformExpression ) ;
425+ dc = new LinqToDBForEFToolsDataConnection ( null , dataProvider , connectionInfo . ConnectionString , model , TransformExpression ) ;
425426
426427 if ( dc == null )
427428 throw new LinqToDBForEFToolsException ( $ "Can not extract connection information from { nameof ( DbContextOptions ) } ") ;
@@ -453,11 +454,7 @@ public static IQueryable<T> ToLinqToDB<T>(this IQueryable<T> query, IDataContext
453454 if ( context == null )
454455 throw new LinqToDBForEFToolsException ( "Can not evaluate current context from query" ) ;
455456
456- var newExpression = dc is IExpressionPreprocessor
457- ? query . Expression
458- : TransformExpression ( query . Expression , dc , context . Model ) ;
459-
460- return new LinqToDBForEFQueryProvider < T > ( dc , newExpression ) ;
457+ return new LinqToDBForEFQueryProvider < T > ( dc , query . Expression ) ;
461458 }
462459
463460 /// <summary>
@@ -479,11 +476,7 @@ public static IQueryable<T> ToLinqToDB<T>(this IQueryable<T> query)
479476
480477 var dc = CreateLinqToDbContext ( context ) ;
481478
482- var newExpression = dc is IExpressionPreprocessor
483- ? query . Expression
484- : TransformExpression ( query . Expression , dc , context . Model ) ;
485-
486- return new LinqToDBForEFQueryProvider < T > ( dc , newExpression ) ;
479+ return new LinqToDBForEFQueryProvider < T > ( dc , query . Expression ) ;
487480 }
488481
489482 /// <summary>
0 commit comments