c# – 我可以在Entity Framework中的IDbCommandInterceptor中访
发布时间:2020-12-15 21:59:26 所属栏目:百科 来源:网络整理
导读:实现IDbCommandInterceptor时,我可以访问为命令/查询创建的SQL命令.是否也可以访问在实现的方法中持久保存/检索的实际实体对象? 这是一些幻想代码,用于演示我想要做的事情: public class WidgetInterceptor : IDbCommandInterceptor{ public void NonQuery
实现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中实体的数量,类型和状态可能足以完成您的工作.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |