【问题标题】:ServiceStack OrmLite Sql Query LoggingServiceStack OrmLite Sql 查询日志
【发布时间】: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>();
    }

【问题讨论】:

    标签: c# servicestack ormlite-servicestack


    【解决方案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”无论如何谢谢.. 很大的帮助
    猜你喜欢
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多