我正在尝试获取我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 语句”功能,那就太好了。
谢谢你的帮助。