ServiceStack OrmLite Sql 查询日志

Posted

技术标签:

【中文标题】ServiceStack OrmLite Sql 查询日志【英文标题】:ServiceStack OrmLite Sql Query Logging 【发布时间】:2012-07-16 20:56:57 【问题描述】:

根据Service Stack Ormlite documentation。我应该在调试模式下生成 sql 查询。但是,我看不到这些查询。简单的代码

 private static readonly string DataDirLoc =
        Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
        "\\TargetIntegration\\Test\\Debug\\";



    private readonly string dbFileName = DataDirLoc +
                                              "Test.db3";

    [Test]
    public void Can_Generate_log() 
        //var writer = new TextWriterTraceListener(System.Console.Out);
        //Debug.Listeners.Add(writer);
        Debug.Write("this is a try");
        var dbFact = new OrmLiteConnectionFactory("Data Source=0;Version=3;".FormatParams(dbFileName), true,
                                                  SqliteOrmLiteDialectProvider.Instance);
          IDbConnection dbConnection = dbFact.OpenDbConnection();
       var dbCommand = dbConnection.CreateCommand();
        dbCommand.CreateTable<Contact>();
    

【问题讨论】:

【参考方案1】:

您需要 OrmLite 的调试版本才能查看 SQL 输出。 您可以通过其他几种方式查看最后一条 sql:

Console.WriteLine(dbCmd.GetLastSql());

您还可以通过设置连接过滤器来分析数据库连接,您可以这样做:

var dbFact = new OrmLiteConnectionFactory(
   "Data Source=0;Version=3;".Fmt(dbFileName), true, 
   SqliteOrmLiteDialectProvider.Instance) 
   ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current)
;

如果您在ServiceStack 中运行此程序,您将看到所有 SQL 语句的分析时序输出。此处提供了一个示例:

https://gist.github.com/1787443

【讨论】:

感谢黛米斯。但是,我在 Windows 应用程序中使用 ORMlite。我不认为我可以使用 MVC 迷你分析器。可能是我错了。请指导。 默认情况下,dbCommand 上没有扩展方法“GetLastSql()”,我可以使用“CommandText”。但它只给出最后执行的语句。 好吧,如果您托管了一个 ServiceStack 自托管 HttpListener 服务,您可以 :) 但是 WinApp 中的网络服务器对于调试来说似乎有点繁重。您还可以创建自己的 ProfiledDbConnection 并将所有 SQL 记录到控制台。这是源代码github.com/ServiceStack/ServiceStack/blob/master/src/… 更新 NuGet,如果您没有 dbCmd.GetLastSql(),但它只是 dbCmd.CommandText 的一个包装器,所以如果您想要更多,将无济于事:) 很好的建议 :).. 我想我会创建自己的“ProfiledDbConnection”无论如何谢谢.. 很大的帮助

以上是关于ServiceStack OrmLite Sql 查询日志的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 和 ServiceStack.OrmLite 中使用架构名称

VeraCode 报告 ServiceStack OrmLite 对 SQL 命令中使用的特殊元素进行了不当中和(“SQL 注入”)(CWE ID 89)

ServiceStack OrmLite“喜欢”Linq

ServiceStack.OrmLite 调用存储过程

ServiceStack Webhook + ServiceStack.Webhooks.OrmLite 订阅商店插件问题

使用 ServiceStack.ORMLite 的存储库模式中的事务