Вы можете использовать Context Log property
, как показано ниже.
Примечание: Это всего лишь пример. Измените его, как хотите.
using (var context = new BlogContext())
{
context.Database.Log = Console.Write;
var blog = context.Blogs.First(b => b.Title == "One Unicorn");
}
Выше сгенерирует следующий вывод:
SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[Title] AS [Title]
FROM [dbo].[Blogs] AS [Extent1]
WHERE (N'One Unicorn' = [Extent1].[Title]) AND ([Extent1].[Title] IS NOT NULL)
-- Executing at 10/8/2013 10:55:41 AM -07:00
-- Completed in 4 ms with result: SqlDataReader
Вы можете настроить DatabaseLogFormatter
, если вы хотите.
Вы можете переопределить ниже указанные методы:
LogCommand - Перекрыть это изменить, как команды записываются перед тем они выполняются. По умолчанию LogCommand вызывает LogParameter для каждого параметра ; вы можете сделать то же самое в своих переопределениях или обрабатывать параметры иначе.
LogResult - переопределить это значение, чтобы изменить результат выполнения команды .
LogParameter - переопределить это, чтобы изменить форматирование и содержимое журнала регистрации .
Вот пример того, как сделать это:
public class OneLineFormatter : DatabaseLogFormatter
{
public OneLineFormatter(DbContext context, Action<string> writeAction)
: base(context, writeAction)
{
}
public override void LogCommand<TResult>(
DbCommand command, DbCommandInterceptionContext<TResult> interceptionContext)
{
Write(string.Format(
"Context '{0}' is executing command '{1}'{2}",
Context.GetType().Name,
command.CommandText.Replace(Environment.NewLine, ""),
Environment.NewLine));
}
public override void LogResult<TResult>(
DbCommand command, DbCommandInterceptionContext<TResult> interceptionContext)
{
}
}
Ссылка:Logging and Intercepting Database Operations
этот журнал показывает только командный текст, но не выбранный номер строки. –
спасибо. но где & как я могу получить номер строки. –
Вы можете показать свой запрос? – Sampath