实现IDbCommandInterceptor时,我可以访问为命令/查询创建的SQL命令.是否也可以访问在实现的方法中持久保存/检索的实际实体对象?
这是一些幻想代码,用于演示我想要做的事情:
public class WidgetInterceptor : IDbCommandInterceptor { public void NonQueryExecuting(System.Data.Common.DbCommand command,DbCommandInterceptionContext<int> interceptionContext) { var widget = interceptionContext.Entity as Widget; if(widget != null) { //Perform tasks on widget before it is saved... } } }
解决方法
在查询的情况下,没有一个实体.执行的SQL命令可以返回任意数量的行,这些行可能导致实体化实体或某种投影.您可以访问所涉及的DbContext或ObjectContext,并通过其ChangeTracker查看其中的实体的状态,但据我所知,没有直接的方法将您正在执行的特定命令与任何特定实体相关联.根据您的上下文,ChangeTracker中实体的数量,类型和状态可能足以完成您的工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。