Cara Log SQL Dijana daripada DbContext.SaveChanges()
Dalam Rangka Kerja Entiti (EF), anda boleh log penyata SQL yang dihasilkan dengan mudah dengan kaedah DbContext.SaveChanges() anda. Begini caranya:
Menggunakan Pangkalan Data.Harta Log:
Dalam EF 6.0 dan lebih baru, kelas Pangkalan Data mempunyai Action
context.Database.Log = Console.WriteLine;
Menggunakan Pemintas:
Jika anda memerlukan lebih lanjut keupayaan pembalakan, anda boleh menggunakan pemintas. Pemintas ialah kelas yang mewarisi daripada DbInterceptor dan mengatasi pelbagai kaedahnya. Satu kaedah sedemikian ialah OnNonQueryExecuted, yang dipanggil setiap kali pernyataan bukan pertanyaan dilaksanakan (seperti SaveChanges()).
Dalam kaedah OnNonQueryExecuted, anda boleh mengakses pernyataan SQL yang telah dilaksanakan dan logkannya ke fail, pangkalan data atau mana-mana lokasi lain.
Contoh Kod:
Berikut ialah contoh pemintas yang merekodkan pernyataan SQL ke fail:
public class SqlLoggerInterceptor : DbInterceptor { private readonly TextWriter _logWriter; public SqlLoggerInterceptor(TextWriter logWriter) { _logWriter = logWriter; } public override void OnNonQueryExecuted(DbCommand command, DbCommandInterceptionContext interceptionContext) { _logWriter.WriteLine(command.CommandText); } }
Anda boleh mendaftarkan pemintas seperti ini:
Database.SetInitializer<MyContext>(null); Database.AddInterceptor(new SqlLoggerInterceptor(File.AppendText("log.txt")));
Atas ialah kandungan terperinci Bagaimana untuk Log Penyata SQL Dijana oleh DbContext.SaveChanges() dalam Rangka Kerja Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!