如何从Entity Framework查看生成的SQL?

时间:2010-10-28 01:44:20

标签: entity-framework

正如标题所说,如何在我的代码中查看Entity Framework生成的SQL?我遇到了一个错误,EF正在崩溃,因为数据库生成了一个字段(一个DateTime字段),我想我设置它知道商店是通过StoreGeneratedPattern生成它,但它仍然崩溃,所以我我想知道究竟是什么试图推进数据库。

P.S。我现在只使用EF约一个小时......从L2S切换。

5 个答案:

答案 0 :(得分:16)

由于您没有Sql Profiler,因此您最好的选择是LINQPad。您可以使用现有的装配体。

点击Add connection - > Use a typed data context from your own assembly - > Entity framework并选择你的dll。

您可以直接针对您的模型编写查询(或从您的代码中复制粘贴)。选择查询窗口下的SQL'选项卡'以查看生成的SQL代码。

答案 1 :(得分:5)

您可以使用Entity Framework Profiler(EFProf)。这不是免费的,但有30天的试用版。除了向您展示SQL语句之外,它还能做更多整洁的事情。

答案 2 :(得分:3)

通常,您应始终使用 SQL Profiler 查看EF提交到数据库中的SQL语句。

另外,我认为你误解了StoreGeneratedPattern是什么。如果您查看模型中的可能值,您会看到它具有 标识 ,这意味着在插入行时将(由数据库)生成该值并且不会改变。其他选项是 Computed ,它指定在插入和更新时生成值, ,这是默认值。
因此,EF不会为您动态生成DateTime字段,您需要手动创建它,然后从数据库更新模型,以便EF生成适当的元数据以在运行时使用它。

答案 3 :(得分:3)

如果由于您使用的是SQL Server Express而导致真正的SQL事件探查器不可用,那么免费的AnjLab Sql Profiler将会正常工作:http://anjlab.com/en/projects/opensource/sqlprofiler。它并不像真实的东西那么好,但它可以很好地完成工作。

答案 4 :(得分:2)

一种解决方案是捕获网络流量并查看该级别的数据。 Microsoft网络监视器在这方面做得很好。

当然,只有在您使用单独的数据库服务器且连接未加密时才有效。