2013-07-30 66 views
0

OrmLite生成的Sql語句如何登錄到日誌框架(如NLog)中的最佳方式是什麼?我知道DbConnection上的GetLastSql()方法,但有沒有其他方法?OrmLite中的SQL語句記錄(ServiceStack)

我們希望在數據層中使用OrmLite,可以記錄所有生成的具有多年數據的Windows窗體應用程序的sql,並且在GUI中寫入所有sql。性能是一個問題,所以我們決定去與OrmLite(無上下文方法)

回答

2

你必須創建你自己的ProfiledDConnection類寫入日誌到NLog的實現。現在,當您創建OrmLiteConnectionFactory類組連接過濾器的instanace你可以做這樣的:

var db = new OrmLiteConnectionFactory(
    "ConnectionString", true, 
    SqliteOrmLiteDialectProvider.Instance) { 
    ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current) 
}; 

這裏有ProfiledDbConnection https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/MiniProfiler/Data/ProfiledDbConnection.cs

+1

謝謝你的SRC,但是這看起來複雜,只需登錄SQL - 我們正在使用一個通用包裝器(某種類型的通用存儲庫)圍繞DbConnection,它使用GetLastSql()方法,這裏建議 - http://stackoverflow.com/questions/11530943/servicestack-ormlite-sql-query-logging – nhaberl

+0

我忘了第二種可能性(最簡單)。 –