Как найти запрос, отправленный через ODAC в Oracle Database при использовании Entity Framework (EF) - PullRequest
1 голос
/ 17 ноября 2011

Я использую Oracle ODAC для EntityFramework.Я пытаюсь разработать пример приложения Silverlight с использованием entityframework.Я добавил свой домен-сервис, через который я публикую свои объекты.Я код пользовательского интерфейса файла.Я написал следующий код:

var threemonthsold = DateTime.Now.AddMonths(-3);
var query = serverContext.GetSR_MERGED_DATAQuery().Where(t => t.SR_DATE_RECD > threemonthsold);

var regionLoadOp = serverContext.Load(query);
dataGrid.ItemsSource = regionLoadOp.Entities; 

Я хочу узнать, какой запрос был отправлен в Oracle.По мере истечения времени ожидания приложения происходит сбой.Похоже, запрос занимает много времени.Если я смогу найти запрос, я смогу запустить его непосредственно на Oracle и выяснить, сколько времени он там занимает.

Любая помощь очень ценится.

Спасибо

Ответы [ 2 ]

1 голос
/ 08 июля 2013

Если вы отправляете запросы по сети, Wireshark - отличный способ просмотреть фактические передаваемые пакеты.Если вы введете TNS в качестве фильтра пакетов (не фильтра захвата, а того, который находится на главной странице и поменяет красный / зеленый на неверном / действительном входе), вы увидите пакеты Oracle.

imagetns filter and Find Packet searching for the string 'select' in the packet's bytes.">

Кажется, что нет обслуживаемого анализатора пакетов , чтобы показать различные части пакета, но вы можете посмотреть на байты данных и увидеть ASCIIтекст, показывающий операторы SQL.(Вы также увидите кучу ненужных открытий / закрытий сессии.)

0 голосов
/ 06 февраля 2012

Нашли ответ на этот вопрос на форуме . :

cshay Dec 3, 2011 9:58 AM (in response to 900653)
You can turn on ODP.NET tracing. See the ODP.NET doc for more details:

1) Close VS
2) In windows registry, change registry value 
    \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ODP.NET\4..........\TraceLevel
    to 1
3) Relaunch VS
4) Reproduce the problem
5) Close VS2010
6) Look for the odpnet trace file in the root of C I believe.
7) Undo the registry value (set it back to 0) so you don't impact performance
...