2014-01-21 68 views
2

如何获取由Context.SaveChanges()生成的sql查询;命令。我需要这个,因为用户可以选择为数据分发创建一个脚本,而不是插入到本地基础中。实体框架脚本生成

谢谢。

更新:

我在WCF数据服务中使用实体框架。

+0

如果是查询单个或少数几个,你可以看到(及复印件)SQL Server Profiler中(www.codeproject.com/Articles/21371/SQL-Server-Profiler-Step-by-正在运行的精确查询步)。如果你的意思是即时生成脚本,那么我不确定。 – HockeyJ

+0

我正在使用实体框架,生成的SQL非常复杂,我相信我会保持。 – Mortalzera

+0

你能不能给他们提供一个非常简单的软件来接收数据(可能是CSV或者他们想要的)并使用标准接口。我不希望人们直接在数据库上运行复杂的SQL脚本。 – HockeyJ

回答

0

我的解决办法是:不要使用WCF数据服务,这仍然是不完整,如果你需要的安全性和可靠性,使用WCF服务,这样你就可以在自己的范围内有实体框架。 Wcf数据服务还不够成熟。

对于脚本,IAM使用字符串连接StringBuilder的使用。

1

如果您正在使用EF6,您可以使用DbContext.Database.Log。例如,使用下面的SQL将被输出到一起的一些性能数据控制台:

Context.Database.Log = Console.WriteLine; 

你也可以在你想从实际保存更改停止DbContext.SaveChanges情况下进行拦截。

您可以找到有关这两个记录和拦截在this MSDN article信息。

如果您使用的是以前的版本中,可以检查出任何thisthis文章。

+0

这可以完成,但我使用的WCF数据服务非常有限。现在,我正在用stringbuilder创建sql脚本...是的,不是最好的解决方案。 – Mortalzera

+0

顺便说一下,生成的查询非常复杂,几乎不可能维护。 – Mortalzera