加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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中实体的数量,类型和状态可能足以完成您的工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读