Entity Framework 6 - How can I view the SQL that will be generated for an insert before calling SaveChanges

前端 未结 4 913
余生分开走
余生分开走 2021-02-02 08:19

In Entity Framework 6, is it possible to view the SQL that will be executed for an insert before calling SaveChanges?

using (var db =          


        
4条回答
  •  迷失自我
    2021-02-02 09:13

    Another option (if I understand your question correctly), would be to use an IDbCommandInterceptor implementation, which seemingly allows you to inspect SQL commands before they are executed (I hedge my words as I have not used this myself).

    Something like this:

    public class CommandInterceptor : IDbCommandInterceptor
    {
        public void NonQueryExecuting(
            DbCommand command, DbCommandInterceptionContext interceptionContext)
        {
            // do whatever with command.CommandText
        }
    }
    

    Register it using the DBInterception class available in EF in your context static constructor:

    static StuffEntities()
    {
        Database.SetInitializer(null); // or however you have it
        System.Data.Entity.Infrastructure.Interception.DbInterception.Add(new CommandInterceptor());
    }
    

提交回复
热议问题