如何在执行前从对象上下文中排队等待执行的SQL语句

时间:2013-10-15 20:23:27

标签: c# mysql .net sql entity-framework

我正在尝试获取所有创建,更新,删除和插入语句,当我调用ObjectContext时,实体框架中的SaveChanges()将执行。我不想在执行期间或之后获取这些语句,例如可以使用各种分析方法来实现。我想得到这些陈述而不必执行它们。当然,这意味着给出更新行为等一些不完整的陈述。此外,ToTraceString()方法在我的情况下不适用,因为我没有直接访问已创建的查询;我只能访问ObjectContext。当然,如果没有办法控制ObjectContext上执行的所有先前查询。我的代码看起来像这样:

public class myContext : ObjectContext
{
    public myContext() { }
    public string GetQueuedSqlStatements()
    {
       //return queuedsqlstatements
    }
}

有谁知道如何实现这一目标?根据我对EF的薄弱理解,我想EF在调用ObjectServices时会在{​​{1}}上做这样的事情。我不完全确定它是如何实现的 - 也许它遍历SaveChanges()并为每个ObjectStateEntry构建表达式,然后使用提供程序将它们转换为sql。

无论情况如何,如果能够访问其'translate entity to sql statements'功能,那将是非常好的。

感谢您的帮助。

0 个答案:

没有答案