EF"数据库优先" ObjectContext和DbInterception?

时间:2014-03-16 14:55:38

标签: entity-framework entity-framework-6

是否可以将EF 6.0的DbInterception与Database-First ObjectContext一起使用?或者仅通过DbContext使用?

我无法使用我的旧版(旧版)ObjectContext。

提前致谢, 施洛米

1 个答案:

答案 0 :(得分:2)

AFAIK DbInterception与您使用数据库优先还是代码优先建模无关。

您可以在应用程序的开头附近添加一个拦截器。

public class LogInterceptor : IDbCommandInterceptor
{
    public void NonQueryExecuting(System.Data.Common.DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
    {
    }

    public void NonQueryExecuted(System.Data.Common.DbCommand command, DbCommandInterceptionContext<int> interceptionContext)
    {
        System.Diagnostics.Debug.WriteLine(command.CommandText);
    }

    public void ReaderExecuting(System.Data.Common.DbCommand command, DbCommandInterceptionContext<System.Data.Common.DbDataReader> interceptionContext)
    {
    }

    public void ReaderExecuted(System.Data.Common.DbCommand command, DbCommandInterceptionContext<System.Data.Common.DbDataReader> interceptionContext)
    {
        System.Diagnostics.Debug.WriteLine(command.CommandText);
    }

    public void ScalarExecuting(System.Data.Common.DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
    {
    }

    public void ScalarExecuted(System.Data.Common.DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
    {
        System.Diagnostics.Debug.WriteLine(command.CommandText);
    }
}

用法:

// Add an interceptor to log executed SQL queries.
DbInterception.Add(new LogInterceptor());