gpt4 book ai didi

c# - 我可以访问 Entity Framework 中 IDbCommandInterceptor 中的实体吗

转载 作者:行者123 更新时间:2023-11-30 12:46:25 33 4
gpt4 key购买 nike

在实现 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 中实体的数量、类型和状态可能足以满足您的需求。

关于c# - 我可以访问 Entity Framework 中 IDbCommandInterceptor 中的实体吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20420067/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com