2012-07-17 7 views
10

Gemäß der Service Stack Ormlite documentation. Ich sollte die SQL-Abfrage im Debug-Modus generieren. Aber ich kann diese Abfragen nicht sehen. Einfacher CodeServiceStack OrmLite SQL-Abfrage Logging

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>(); 
    } 

Antwort

15

Sie benötigen das Debug-Build von Ormlite, um die SQL-Ausgabe anzuzeigen. Es gibt ein paar andere Möglichkeiten, wie Sie die letzte SQL-Ansicht können:

Console.WriteLine(dbCmd.GetLastSql()); 

Sie können auch die DB-Verbindung Profil durch einen Verbindungsfilter einstellen, die Sie mit tun:

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

Was, wenn Sie haben dies in ausgeführt lassen Sie die profilierten Timing-Ausgaben aller SQL-Anweisungen sehen. Ein Beispiel, wie das aussieht ist hier verfügbar:

https://gist.github.com/1787443

+0

dank Demis. Aber ich benutze ORMLite in einer Windows-Anwendung. Ich denke nicht, dass ich MVC Mini Profiler verwenden kann. Vielleicht irre ich mich. Bitte führen. – Mohit

+0

und standardmäßig gibt es keine Erweiterungsmethode "GetLastSql()" auf dbCommand Ich kann "CommandText" verwenden. Aber es gibt nur die zuletzt ausgeführte Aussage. – Mohit

+1

Nun, wenn Sie einen selbst gehosteten ServiceStack-HttpListener-Dienst hosten, könnten Sie :) aber ein Webserver in einer WinApp scheint ein wenig schwer für das Debuggen. Sie könnten auch Ihre eigene ProfiledDbConnection erstellen und sie einfach alle SQL auf der Konsole protokollieren lassen. Hier ist der src https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/MiniProfiler/Data/ProfiledDbConnection.cs – mythz