EF Profiler - Как это работает? - PullRequest
3 голосов
/ 06 мая 2011

Я пытаюсь узнать больше о том, как подключиться к конвейеру ADO.Net / EF и как неинтуитивно подключиться к конвейеру (чтобы выгружать запросы, результаты и т. Д. В мой журнал).

Все, что я видел, говорит о том, что нет способа ненавязчиво или без использования SQL Profiler ... Но я знаю, что это возможно как лучший EF Profiler удается это сделать.

1 Ответ

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

Я не знаю, как именно EfProf работает внутри, но EF расширяем в виде пользовательских провайдеров - используя нестандартного провайдера, вы можете обернуть существующего провайдера (например, SQL Server) и проверить весь трафик - это позволяет выполнять профилирование.Эта статья посвящена этой теме: Оболочки провайдеров трассировки и кэширования для Entity Framework - здесь приведен пример кода.

Всякий раз, когда вы запускаете запрос LINQ или Entity SQL через экземпляр ObjectContext,запрос проходит через ряд слоев (см. рисунок ниже).На высоком уровне мы можем сказать, что все запросы и обновления из ObjectContext транслируются и выполняются через EntityConnection, который, в свою очередь, обращается к провайдеру данных, специфичному для сервера, такому как SqlClient или клиент Sql Server CE.

Интерфейс провайдера, используемый EntityFramework является наращиваемым, что означает, что можно написать провайдера, который обернет другого провайдера и перехватит связь между Entity Framework и исходным провайдером.

Провайдер-обертка получает возможность делать интересные вещи, такие как:

Проверка деревьев запросов и команд перед их выполнением

Управление соединениями, командами, транзакциями, считывателями данных

enter image description here

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