【问题标题】:Entity Framework Script Generation实体框架脚本生成
【发布时间】:2014-01-21 13:25:01
【问题描述】:

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

谢谢。

更新:

我正在将实体框架与 WCF 数据服务一起使用。

【问题讨论】:

  • 如果是单个或少量查询,您可以查看(并复制)在 SQL Server Profiler 中运行的确切查询 (www.codeproject.com/Articles/21371/SQL-Server-Profiler -一步步)。如果您的意思是即时生成脚本,那么我不确定。
  • 我正在使用实体框架,我相信生成的 sql 维护起来非常复杂。
  • 你能不能为他们提供一个非常简单的软件来接收数据(可能是 CSV 或他们想要的)并使用标准接口。我不希望人们直接在数据库上运行复杂的 SQL 脚本。
  • 现在我只是使用UI数据来生成脚本,如你所说,实体生成的查询非常复杂,几乎无法维护。我真的需要更好地了解 sql server 中的数据分布。

标签: c# sql wcf entity-framework wcf-data-services


【解决方案1】:

如果您使用的是 EF6,则可以使用DbContext.Database.Log。例如,使用以下语句,SQL 将与一些性能数据一起输出到控制台:

Context.Database.Log = Console.WriteLine;

如果您想阻止DbContext.SaveChanges 实际保存更改,您也可以执行拦截。

您可以在this MSDN article 中找到有关日志记录和拦截的信息。

如果您使用的是以前的版本,可以查看thisthis 文章。

【讨论】:

  • 这可以做到,但我使用的是 WCF 数据服务,这是非常有限的。现在,我正在使用 stringbuilder 创建 sql 脚本......是的,这不是最好的解决方案。
  • 顺便说一句,生成的查询非常复杂,几乎无法维护。
【解决方案2】:

我的解决方案是:不要使用尚不完整的Wcf Data Services,如果需要安全性和可靠性,请使用Wcf Services,这样你就可以在自己的范围内拥有实体框架。 wcf数据服务还不够成熟。

对于脚本,我将字符串连接与 stringbuilder 一起使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多