前段时间我设法将一个自定义拦截器添加到EF 6.1的私有分支中,该分支在执行延迟加载的DB-Hit之前和之后被调用,如下所示:
public interface IDbLazyLoadInterceptor : IDbInterceptor
{
void LazyLoadablePropertyGetterCalled<TItem>(DbLazyLoadInterceptionContext<TItem> interceptionContext) where TItem : class;
void PropertyIsGettingLazyLoaded<TItem>(DbLazyLoadInterceptionContext<TItem> interceptionContext) where TItem : class;
void PropertyHasBeenLazyLoaded<TItem>(DbLazyLoadInterceptionContext<TItem> interceptionContext) where TItem : class;
}
现在我有了新的要求。我需要创建一个拦截器,在执行实体的实现之前和之后就被EF调用。问题:我希望能够将其与DB Hits相关联(调用IDbCommandInterceptor
的内容)。
我需要帮助从哪里开始。
我以为我可以在Shaper中添加拦截器调度调用,例如在调用public bool MoveNext()
和public async Task<bool> MoveNextAsync(CancellationToken cancellationToken)
之前和之后的_shaper.StartMaterializingElement();
和_shaper.StopMaterializingElement();
方法中。我想这可行,对吗?
但是我怎样才能将此与馈送到IDbCommandInterceptor
的Db命令相关联?是否有某种方法可以获得由Shaper使用的Reader运行的Command(查询?)?
并且:我错过了我需要添加拦截器调用的其他位置吗?
谢谢,欢呼, 添