Skip to content

Commit 05754fc

Browse files
Merge pull request #97 from nphmuller/IncludeCommandInterceptors
Include command tree interceptor values in GetCommandTextAndParameters()
2 parents 1caf48c + 012de82 commit 05754fc

File tree

5 files changed

+50
-0
lines changed

5 files changed

+50
-0
lines changed

src/Z.EntityFramework.Plus.EF5.NET40/_Internal/EF6/ObjectQuery/GetCommandTextAndParameters.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
#if FULL || QUERY_CACHE || QUERY_FILTER
99
#if EF6
1010
using System;
11+
using System.Collections.Generic;
1112
using System.Data.Common;
1213
using System.Data.Entity.Core.EntityClient;
1314
using System.Data.Entity.Core.Objects;
15+
using System.Data.Entity.Infrastructure.Interception;
1416
using System.Reflection;
1517

1618
namespace Z.EntityFramework.Plus
@@ -34,6 +36,14 @@ public static Tuple<string, DbParameterCollection> GetCommandTextAndParameters(t
3436
var prepareEntityCommandBeforeExecutionMethod = getCommandDefinition.GetType().GetMethod("PrepareEntityCommandBeforeExecution", BindingFlags.NonPublic | BindingFlags.Instance);
3537
var prepareEntityCommandBeforeExecution = (DbCommand) prepareEntityCommandBeforeExecutionMethod.Invoke(getCommandDefinition, new object[] {entityCommand});
3638

39+
var commandDispatcherField = DbInterception.Dispatch.Command.GetType().GetField("_internalDispatcher", BindingFlags.Instance | BindingFlags.NonPublic);
40+
var commandDispatcher = commandDispatcherField.GetValue(DbInterception.Dispatch.Command);
41+
42+
var interceptorsField = commandDispatcher.GetType().GetField("_interceptors", BindingFlags.Instance | BindingFlags.NonPublic);
43+
var interceptors = (List<IDbCommandInterceptor>) interceptorsField.GetValue(commandDispatcher);
44+
45+
interceptors.ForEach(i => i.ReaderExecuting(prepareEntityCommandBeforeExecution, new DbCommandInterceptionContext<DbDataReader>(objectQuery.Context.GetInterceptionContext())));
46+
3747
sql = prepareEntityCommandBeforeExecution.CommandText;
3848
var parameters = prepareEntityCommandBeforeExecution.Parameters;
3949

src/Z.EntityFramework.Plus.EF5/_Internal/EF6/ObjectQuery/GetCommandTextAndParameters.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
#if FULL || QUERY_CACHE || QUERY_FILTER
99
#if EF6
1010
using System;
11+
using System.Collections.Generic;
1112
using System.Data.Common;
1213
using System.Data.Entity.Core.EntityClient;
1314
using System.Data.Entity.Core.Objects;
15+
using System.Data.Entity.Infrastructure.Interception;
1416
using System.Reflection;
1517

1618
namespace Z.EntityFramework.Plus
@@ -34,6 +36,14 @@ public static Tuple<string, DbParameterCollection> GetCommandTextAndParameters(t
3436
var prepareEntityCommandBeforeExecutionMethod = getCommandDefinition.GetType().GetMethod("PrepareEntityCommandBeforeExecution", BindingFlags.NonPublic | BindingFlags.Instance);
3537
var prepareEntityCommandBeforeExecution = (DbCommand) prepareEntityCommandBeforeExecutionMethod.Invoke(getCommandDefinition, new object[] {entityCommand});
3638

39+
var commandDispatcherField = DbInterception.Dispatch.Command.GetType().GetField("_internalDispatcher", BindingFlags.Instance | BindingFlags.NonPublic);
40+
var commandDispatcher = commandDispatcherField.GetValue(DbInterception.Dispatch.Command);
41+
42+
var interceptorsField = commandDispatcher.GetType().GetField("_interceptors", BindingFlags.Instance | BindingFlags.NonPublic);
43+
var interceptors = (List<IDbCommandInterceptor>) interceptorsField.GetValue(commandDispatcher);
44+
45+
interceptors.ForEach(i => i.ReaderExecuting(prepareEntityCommandBeforeExecution, new DbCommandInterceptionContext<DbDataReader>(objectQuery.Context.GetInterceptionContext())));
46+
3747
sql = prepareEntityCommandBeforeExecution.CommandText;
3848
var parameters = prepareEntityCommandBeforeExecution.Parameters;
3949

src/Z.EntityFramework.Plus.EF6.NET40/_Internal/EF6/ObjectQuery/GetCommandTextAndParameters.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
#if FULL || QUERY_CACHE || QUERY_FILTER
99
#if EF6
1010
using System;
11+
using System.Collections.Generic;
1112
using System.Data.Common;
1213
using System.Data.Entity.Core.EntityClient;
1314
using System.Data.Entity.Core.Objects;
15+
using System.Data.Entity.Infrastructure.Interception;
1416
using System.Reflection;
1517

1618
namespace Z.EntityFramework.Plus
@@ -34,6 +36,14 @@ public static Tuple<string, DbParameterCollection> GetCommandTextAndParameters(t
3436
var prepareEntityCommandBeforeExecutionMethod = getCommandDefinition.GetType().GetMethod("PrepareEntityCommandBeforeExecution", BindingFlags.NonPublic | BindingFlags.Instance);
3537
var prepareEntityCommandBeforeExecution = (DbCommand) prepareEntityCommandBeforeExecutionMethod.Invoke(getCommandDefinition, new object[] {entityCommand});
3638

39+
var commandDispatcherField = DbInterception.Dispatch.Command.GetType().GetField("_internalDispatcher", BindingFlags.Instance | BindingFlags.NonPublic);
40+
var commandDispatcher = commandDispatcherField.GetValue(DbInterception.Dispatch.Command);
41+
42+
var interceptorsField = commandDispatcher.GetType().GetField("_interceptors", BindingFlags.Instance | BindingFlags.NonPublic);
43+
var interceptors = (List<IDbCommandInterceptor>) interceptorsField.GetValue(commandDispatcher);
44+
45+
interceptors.ForEach(i => i.ReaderExecuting(prepareEntityCommandBeforeExecution, new DbCommandInterceptionContext<DbDataReader>(objectQuery.Context.GetInterceptionContext())));
46+
3747
sql = prepareEntityCommandBeforeExecution.CommandText;
3848
var parameters = prepareEntityCommandBeforeExecution.Parameters;
3949

src/Z.EntityFramework.Plus.EF6/_Internal/EF6/ObjectQuery/GetCommandTextAndParameters.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
#if FULL || QUERY_CACHE || QUERY_FILTER
99
#if EF6
1010
using System;
11+
using System.Collections.Generic;
1112
using System.Data.Common;
1213
using System.Data.Entity.Core.EntityClient;
1314
using System.Data.Entity.Core.Objects;
15+
using System.Data.Entity.Infrastructure.Interception;
1416
using System.Reflection;
1517

1618
namespace Z.EntityFramework.Plus
@@ -34,6 +36,14 @@ public static Tuple<string, DbParameterCollection> GetCommandTextAndParameters(t
3436
var prepareEntityCommandBeforeExecutionMethod = getCommandDefinition.GetType().GetMethod("PrepareEntityCommandBeforeExecution", BindingFlags.NonPublic | BindingFlags.Instance);
3537
var prepareEntityCommandBeforeExecution = (DbCommand) prepareEntityCommandBeforeExecutionMethod.Invoke(getCommandDefinition, new object[] {entityCommand});
3638

39+
var commandDispatcherField = DbInterception.Dispatch.Command.GetType().GetField("_internalDispatcher", BindingFlags.Instance | BindingFlags.NonPublic);
40+
var commandDispatcher = commandDispatcherField.GetValue(DbInterception.Dispatch.Command);
41+
42+
var interceptorsField = commandDispatcher.GetType().GetField("_interceptors", BindingFlags.Instance | BindingFlags.NonPublic);
43+
var interceptors = (List<IDbCommandInterceptor>) interceptorsField.GetValue(commandDispatcher);
44+
45+
interceptors.ForEach(i => i.ReaderExecuting(prepareEntityCommandBeforeExecution, new DbCommandInterceptionContext<DbDataReader>(objectQuery.Context.GetInterceptionContext())));
46+
3747
sql = prepareEntityCommandBeforeExecution.CommandText;
3848
var parameters = prepareEntityCommandBeforeExecution.Parameters;
3949

src/Z.EntityFramework.Plus.EFCore/_Internal/EF6/ObjectQuery/GetCommandTextAndParameters.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
#if FULL || QUERY_CACHE || QUERY_FILTER
99
#if EF6
1010
using System;
11+
using System.Collections.Generic;
1112
using System.Data.Common;
1213
using System.Data.Entity.Core.EntityClient;
1314
using System.Data.Entity.Core.Objects;
15+
using System.Data.Entity.Infrastructure.Interception;
1416
using System.Reflection;
1517

1618
namespace Z.EntityFramework.Plus
@@ -34,6 +36,14 @@ public static Tuple<string, DbParameterCollection> GetCommandTextAndParameters(t
3436
var prepareEntityCommandBeforeExecutionMethod = getCommandDefinition.GetType().GetMethod("PrepareEntityCommandBeforeExecution", BindingFlags.NonPublic | BindingFlags.Instance);
3537
var prepareEntityCommandBeforeExecution = (DbCommand) prepareEntityCommandBeforeExecutionMethod.Invoke(getCommandDefinition, new object[] {entityCommand});
3638

39+
var commandDispatcherField = DbInterception.Dispatch.Command.GetType().GetField("_internalDispatcher", BindingFlags.Instance | BindingFlags.NonPublic);
40+
var commandDispatcher = commandDispatcherField.GetValue(DbInterception.Dispatch.Command);
41+
42+
var interceptorsField = commandDispatcher.GetType().GetField("_interceptors", BindingFlags.Instance | BindingFlags.NonPublic);
43+
var interceptors = (List<IDbCommandInterceptor>) interceptorsField.GetValue(commandDispatcher);
44+
45+
interceptors.ForEach(i => i.ReaderExecuting(prepareEntityCommandBeforeExecution, new DbCommandInterceptionContext<DbDataReader>(objectQuery.Context.GetInterceptionContext())));
46+
3747
sql = prepareEntityCommandBeforeExecution.CommandText;
3848
var parameters = prepareEntityCommandBeforeExecution.Parameters;
3949

0 commit comments

Comments
 (0)