我正在尝试获取所有创建,更新,删除和插入语句,当我调用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'功能,那将是非常好的。
感谢您的帮助。