代码之家  ›  专栏  ›  技术社区  ›  bastos.sergio

如何记录Subsonic3 SQL

  •  1
  • bastos.sergio  · 技术社区  · 16 年前

    我开始开发一个基于subsonic3(用于查询)和log4net(用于日志)的新ASP.NET应用程序,我想知道如何将subsonic3与log4net接口,以便log4net记录subsonic使用的底层SQL。

    这就是我目前为止所拥有的:

    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 回复  |  直到 16 年前
        1
  •  1
  •   saintedlama    16 年前

    可以使用提供程序类的日志属性:

    _db.Provider.Log = Console.Out;
    

    将您的SQL语句记录到控制台。如果您想使用log4net或类似的东西,您将不得不编写一个小的中介类来实现文本编写器并将所有接收到的输入重定向到log4net。

        2
  •  0
  •   andrecarlucci    16 年前

    您可以这样获得生成的SQL:

    string sql = select.GetQueryText();
    

    确保您使用的是3.0.0.4或更高版本。

    干杯

    推荐文章