0

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

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

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

不管是什么情况,如果能够访问它的“将实体转换为 sql 语句”功能,那就太好了。

谢谢你的帮助。

4

0 回答 0