
در برخی موارد نیاز هست که کوئری ایجاد شده توسط EF را روی Profiler پیدا کنیم و ببینیم این کوئری کجای برنامه ایجاد و اجرا شده است. در EF قابلیت به نام WithTag() وجود داشته که میتوان به کوئریها تگ اضافه کرد و سپس این کوئری رو توی Profiler پیدا کرد.
حالا برای اینکه این تگ رو بهبود بدیم میتونیم از اکستنشن متد زیر استفاده کنیم:
public static class QueryTagExtension
{
public static IQueryable<T> _TagWithMoreDetails<T>(this IQueryable<T> query,
string message = "",
[CallerMemberName] string memberName = "",
[CallerFilePath] string filePath = "",
[CallerLineNumber] int lineNumber = 0)
{
string tag = string.Empty;
if (!string.IsNullOrEmpty(message))
{
tag = $"Executing method: [{memberName}] from file: [{Path.GetFileName(filePath)}] at line: [{lineNumber}] - message: [{message}]";
}
else
{
tag = $"Executing method: [{memberName}] from file: [{Path.GetFileName(filePath)}] at line: [{lineNumber}]";
}
return query.TagWith(tag);
}
}