нет SQL профилирования для Entity Framework Code First - PullRequest
1 голос
/ 09 августа 2011

Я уже некоторое время борюсь с этим, и я вижу, что я не единственный, у кого проблема (см. это и , что ).

Мне удалось немного отладить, и я нашел решение, хотя я почти уверен, что это не правильный путь.

Первый сеанс отладки (до сервера разработки)был включен) показал, что классы ProfiledDbConnectionFactory и ProfiledDbConnection предоставляют необходимые данные, но после создания соединения статическое свойство Instance в ProfiledDbProviderFactory инициализируется (вызывая конструктор по умолчанию) и, по-видимому, CreateConnection () запускается для этого экземпляра, что приводит к исключению пустой ссылки (tail is null).

Мне удалосьЧтобы решить эту проблему, запустите

ProfiledDbProviderFactory.Instance.InitProfiledDbProviderFactory(_profiler, ripInnerProvider(_conn));

в конце ProfiledDbConnection (соединение DbConnection, IDbProfiler profiler) .

Это позволяет мне просматривать профилирование sql, bНо, как я уже писал, у меня такое чувство, что это не правильное решение.

Вот пример кода , который я использовал.Не уверен, что что-то не так с моей средой или моим кодом, так как у меня есть ощущение, что это должно работать из коробки.Есть комментарии / предложения?Сэм?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

Эта проблема была решена в версии 1.9.1 MiniProfiler.EF

0 голосов
/ 18 августа 2011

нет ничего плохого в том, что использование инфраструктуры сущностей ProfiledDbConnectionFactory предназначено для поддержки невежества. Обычно я просто использую инструменты отладчика и создаю точку останова для просмотра моих сгенерированных операторов SQL, так как среда первого кода предоставляет готовый оператор SQL там

Я бы предпочел использовать профилированные соединения, как вы описали в модульном тестировании, а не использовать его в производственном коде, поскольку профилирование может привести к падению производительности. Также стоит рассмотреть возможность использования SQL Server Profiler, включенного в SQL Server, и есть такжеSQL Server Profiler, доступный как расширение Visual Studio, но я не уверен, поддерживает ли он сначала код на данный момент

...