2012-07-17 11 views
10

Según el Service Stack Ormlite documentation. Debería generar la consulta sql en modo de depuración. Pero, no puedo ver esas consultas. Código simpleServiceStack 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>(); 
    } 

Respuesta

15

Necesitará la construcción de depuración de OrmLite para ver la salida de SQL. Hay un par de otras maneras que usted puede ver el último sql:

Console.WriteLine(dbCmd.GetLastSql()); 

También puede perfilar la conexión db mediante el establecimiento de un filtro de conexión, que se puede ver con:

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

que, si se ejecutó esto en ServiceStack le permitirá ver las salidas de tiempo perfiladas de todas las declaraciones de SQL. Un ejemplo de cómo se ve está disponible aquí:

https://gist.github.com/1787443

+0

gracias Demis. Pero, estoy usando ORMlite en una aplicación de Windows. No creo que pueda usar MVC mini profiler. Tal vez yo estoy equivocado. Por favor guía. – Mohit

+0

y de forma predeterminada no hay un método de extensión "GetLastSql()" en dbCommand, puedo usar "CommandText". Pero solo da la última instrucción ejecutada. – Mohit

+1

Bueno, si alojaste un servicio HttpListener autohospedado de ServiceStack, podrías :) pero un servidor web en una WinApp parece un poco pesado para la depuración. También puede crear su propia ProfiledDbConnection y simplemente hacer que registre todos los SQL en la consola. Aquí está el src https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/MiniProfiler/Data/ProfiledDbConnection.cs – mythz