Ведение журнала всех запросов Entity Framework в окне отладки в подходе DB-First - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу регистрировать запросы Entity Framework в моем окне отладки. Я мог бы сделать это со следующей строкой:

myContext.Database.Log = s => System.Diagnostics.Debug.WriteLine(s);

Но как я могу сделать это для всех моих запросов в разных функциях и в разных файлах?

Должен ли я писать эту строку везде?

Или есть способ сделать это, написав определенную строку кода для регистрации каждого запроса в одном месте.

Как и предполагалось, я написал код в конструкторе контекста, но он не работает.

public partial class EkartEntities : DbContext
{
    public EkartEntities() : base("name=EkartEntities")
    {
        Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
    }
}

Я что-то не так делаю?

Кроме того, он не является дубликатом Как выполнить глобальный запрос EF log sql? поскольку пост содержит ответ подхода Code-First, где мы можем просто изменить наш конструктор.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Вы можете установить глобальный регистратор, добавив следующий класс в проект, содержащий ваш производный класс DbContext:

class MyDbConfiguration : System.Data.Entity.DbConfiguration
{
    public MyDbConfiguration()
    {
        AddInterceptor(new System.Data.Entity.Infrastructure.Interception.DatabaseLogFormatter(
            s => System.Diagnostics.Debug.WriteLine(s)));
    }
}

Класс представляет собой так называемую конфигурацию на основе кода ив данном конкретном случае используется для автоматической регистрации DatabaseLogFormatter с указанными Action<string> для всех DbContext производных типов и экземпляров в проекте, который его содержит.

0 голосов
/ 13 сентября 2018

Я думаю, что лучше использовать SQL Server Profiler для сбора всех запросов к базе данных.

Если вы разрабатываете локально, SQL Profiler идеально подойдет вам.

Профилировщик может захватить любой тип запросов Linq или Raw SQL Query.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...