1

我将 Oracle ODAC 用于 EntityFramework。我正在尝试使用实体框架开发示例 Silverlight 应用程序。我添加了我通过它发布我的实体的域服务。我是 UI 的代码隐藏文件。我已经编写了以下代码。

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 上运行它并找出它需要多长时间。

非常感谢任何帮助。

谢谢

4

2 回答 2

1

如果您通过网络发送查询,Wireshark是查看正在传输的实际数据包的好方法。如果您输入TNS数据包过滤器(不是捕获过滤器,而是在主页上并在无效/有效输入时变为红色/绿色的过滤器),您可以看到 Oracle 数据包。

使用 <code>tns</code> 过滤器和 Find Packet 在数据包字节中搜索字符串“select”找到的 oracle 数据包的屏幕截图。

似乎没有维护数据包解析器来显示数据包的不同部分,但您可以查看数据字节并查看显示 SQL 语句的 ASCII 文本。(您还会看到一堆会话打开/关闭垃圾。)

于 2013-07-08T19:18:52.717 回答
0

在以下论坛中找到了这个问题的答案。:

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
于 2012-02-05T23:44:31.780 回答