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 ステートメントに変換する」機能にアクセスできれば、とても便利です。
ご協力いただきありがとうございます。