2012-07-17 16 views
10

Service Stack Ormlite documentationに従って。私は、デバッグモードでSQLクエリを生成する必要があります。しかし、私はそれらのクエリを見ることができません。シンプルコードServiceStack OrmLite 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>(); 
    } 

答えて

15

SQL出力を表示するには、OrmLiteのデバッグビルドが必要です。 あなたが最後のSQL見ることができ、他のいくつかの方法があります。また、あなたはで行うことができます接続フィルタを設定することで、DB接続のプロファイルを作成することができ

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

+0

感謝DEMIS。しかし、私はORMliteをWindowsアプリケーションで使用しています。私はMVCのミニプロファイラを使用することはできないと思う。私は間違っているかもしれません。ご案内ください。 – Mohit

+0

デフォルトでは、dbCommandに "GetLastSql()"という拡張メソッドはありません。 "CommandText"を使用することができます。しかし、それは最後に実行された文を与えるだけです。 – Mohit

+1

あなたがServiceStackの自己ホスト型HttpListenerサービスをホストしていればいいでしょう:)しかし、WinAppのWebサーバーはデバッグに少し重いようです。独自のProfiledDbConnectionを作成して、すべてのSQLをコンソールにログオンさせることもできます。ここにsrc https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/MiniProfiler/Data/ProfiledDbConnection.csがあります。 – mythz