微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 我可以在Entity Framework中的IDbCommandInterceptor中访问实体吗?

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐