Как войти в subsonic3 sql - PullRequest
1 голос
/ 17 мая 2010

Я начинаю разрабатывать новое приложение asp.net на основе subsonic3 (для запросов) и log4net (для журналов) и хотел бы узнать, как взаимодействовать с subsonic3 с log4net, чтобы log4net регистрировал базовый sql, используемый subsonic.

Это то, что я имею до сих пор:

public static IEnumerable<arma_ocorrencium> ListArmasOcorrencia()
    {
        if (logger.IsInfoEnabled)
        {
            logger.Info("ListarArmasOcorrencia: start");
        }

        var db = new BdvdDB();
        var select = from p in db.arma_ocorrencia
                              select p;

        var results = select.ToList<arma_ocorrencium>(); //Execute the query here

        if (logger.IsInfoEnabled)
        {
            // log sql here
        }


        if (logger.IsInfoEnabled)
        {
            logger.Info("ListarArmasOcorrencia: end");
        }

        return results;
    }

Ответы [ 2 ]

1 голос
/ 30 июня 2010

Вы можете использовать свойство Log класса Provider:

_db.Provider.Log = Console.Out;

будет записывать ваши операторы SQL на консоль. Если вы хотите использовать log4net или что-то подобное, вам нужно написать небольшой класс-посредник, который реализует TextWriter и перенаправляет весь полученный ввод в log4net.

0 голосов
/ 10 июня 2010

Вы можете получить сгенерированный sql следующим образом:

string sql = select.GetQueryText();

Убедитесь, что вы используете версию 3.0.0.4 или выше.

Приветствия

...