2012-07-17 11 views
10

Come da Service Stack Ormlite documentation. Dovrei generare la query sql in modalità di debug. Ma non riesco a vedere quelle domande. Simple codeServiceStack OrmLite Sql Query 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>(); 
    } 

risposta

15

È necessario il build di debug di OrmLite per visualizzare l'output SQL. Ci sono un paio di altri modi è possibile visualizzare l'ultima sql:

Console.WriteLine(dbCmd.GetLastSql()); 

È possibile anche il profilo di connessione db impostando un filtro di connessione, che si può fare con:

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

Quale se hai eseguito questo in ServiceStack ti permetterà di vedere le uscite temporali profilate di tutte le istruzioni SQL. Un esempio di come si presenta è disponibile qui:

https://gist.github.com/1787443

+0

grazie Demis. Ma sto usando ORMlite in un'applicazione Windows. Non penso di poter utilizzare il mini profiler MVC. Potrebbe essere che ho torto. Per favore guida. – Mohit

+0

e per impostazione predefinita non esiste alcun metodo di estensione "GetLastSql()" su dbCommand, posso usare "CommandText". Ma dà solo l'ultima dichiarazione eseguita. – Mohit

+1

Bene, se ospitassi un servizio HttpListener self-hosted di ServiceStack potresti :) ma un server web in una WinApp sembra un po 'pesante per il debug. È anche possibile creare il proprio ProfiledDbConnection e fare in modo di registrare tutto SQL nella console. Ecco il src https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/MiniProfiler/Data/ProfiledDbConnection.cs – mythz

Problemi correlati