Количество запросов, выполненных EF4 за запрос - PullRequest
1 голос
/ 03 мая 2011

Есть ли способ получить (и, в конечном итоге, зарегистрировать) общее количество запросов, выполняемых EF4, за запрос (или единицу работы)?

Мне легко писать неэффективный код EF4 из-за его легкого доступа через ленивую загрузку, а также из-за плохо структурированных запросов LINQ.

Один из простых способов определить это - записать общее количество выполняемых запросов и зарегистрировать это с моими данными запроса, чтобы я мог видеть, какие страницы (контроллер / действия) отображаются в чрезмерном количестве запросов.

Есть ли способ сделать это с кодом EF4? Я знаю, что могу сделать это с помощью Profiler, и я уже использую это сейчас, но было бы намного проще - и надежнее - если бы я мог автоматизировать это.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

Вам придется начать с Оболочка провайдера EF Tracing и использовать некоторую инфраструктуру ведения журналов, которая позволит вам запросить разные записи журнала.Вы можете использовать идентификатор потока, идентификатор сеанса или другой идентификатор, чтобы отличать записи журнала. Например, ведение журнала в .NET с TraceSource поддерживает CorrelationManager и его StartLogicalOperation и StopLogicalOperation методы.Я думаю, что вы должны иметь возможность начать логическую операцию при запуске обработки запроса и завершить логическую операцию при завершении обработки запроса.

0 голосов
/ 03 мая 2011

Возможно, вы захотите взглянуть на это: EF Profiler . [примечание: я никоим образом не связан с этой компанией, просто нахожу ее замечательным инструментом]

...