当我发布更新查询或其他数据操作语言(DML)查询以更改数据库中的数据时,如何使用Entity Framework 4,如何查看发送到SQL Server的查询?
假设我做了类似的事情:
someEntityObjectInstance.SomeProperty = newValue;
context.SaveChanges();
在这种情况下,没有ObjectQuery来执行ToTraceString(),所以我无法真正看到幕后发生了什么。我相信有一些Microsoft SQL Server工具,比如探查器或者可以帮助我查看查询的东西。
另外,我认为VS 2010 Ultimate中的一些Intellitrace会做同样的事情吗?
如果有这样的事情,你能教我如何使用SQL 2005 Profiler吗?
更新
我正在查看SQL Server 2005 Profiler中的跟踪但是当我发出context.DeleteObject()
调用或更新对象并调用context.SaveChanges()
时,我看不到UPDATE或DELETE查询剖析器。我只看到奇怪的SELECT查询。
答案 0 :(得分:7)
有更简单的方法,如果你想要的只是在他们点击数据库时看到sql查询。
以下是两个非常轻量级的Sql剖析器,可以完成各种SqlServer风格的工作,包括LocalDb - “在我的机器上工作(TM)”
到目前为止,最容易使用的一个(也是最简单的-s-show-me-the-SQL-statements-kthxbye)是ExpressProfiler on CodePlex。
下载小型ZIP,想知道你是否真的拥有整个文件(你做过),在内部运行EXE,BAM!
整个程序是单个126 KB EXE!现在那很轻!
另一个是来自DataWizard的那个,曾经是免费的(显然价格现在从5美元开始)。
有人设法在开源时保存snapshot on GitHub(包括xcopy可安装的二进制文件)。
可执行文件将自身表示为“AnjLab Sql Profiler”并允许对显示的事件进行一些过滤 - 但这种优势也是它的弱点,因为有太多的事件类型可以启用/禁用。如果选择了所有内容,则输出结果非常冗长。
只有选择特定事件才能获得更好的输出。
以下是为了获得上述输出而选择的事件:
答案 1 :(得分:2)