Хотя я должен был бы попробовать это сам, чтобы быть уверенным, у вас должна быть возможность использовать собственный перехватчик для этого. Проверьте IInterceptor и наследуйте от EmptyInterceptor. Примерно так должно работать:
public class LogSqlInterceptor : EmptyInterceptor {
public SqlString OnPrepareStatement(SqlString sql) {
logger.Log(sql.ToString());
}
}
logger - это то, что вы используете для записи операторов sql. Это может быть просто File.WriteLine (). Я вполне уверен, что это будет делать то, что вы хотите, но я не могу проверить это прямо сейчас.