2013-01-14 35 views
12

Tôi có một mã số tiêu chuẩn:Cách đọc truy vấn SQL do Dapper tạo ra?

public IEnumerable ExperimentSelect(object parameters) 
{ 
    using (var connection = new SqlConnection(ConnectionString)) 
    { 
     connection.Open(); 
     var dynamicparam = new DynamicParameters(parameters); 

     var rows = connection.Query("[dbo].[ptbSapOrderSelect]", dynamicparam, 
       commandType: CommandType.StoredProcedure); 

     if (rows.Any()) 
      TotalRows = ((long)rows.ToList()[0].TotalRows); 

     return rows; 
    } 
} 

Làm thế nào để tự động truy vấn tiết kiệm được tạo ra bởi Dapper đến tập tin sử dụng ví dụ như NLog? Tôi đang nghĩ đến việc lấy nguồn của truy vấn SQL như được hiển thị trong SQL Server Profiler.

+0

Sẽ là tuyệt vời nếu Dapper có phần mở rộng cho SQLMapper.GridReader sẽ loại bỏ SQL được tạo ra. Nó là mã nguồn mở để bạn có thể tự tinh chỉnh nó. Tôi vừa thử và dự án GitHub thậm chí không biên dịch trên máy tính của tôi. :) Chào mừng bạn đến với thế giới nguồn mở. – Pompair

Trả lời

5

tôi quản lý để làm công việc này trong một ứng dụng ASP.Net MVC sử dụng MiniProfiler.

Thứ nhất, cấu hình MiniProfiler theo các tài liệu. Hãy chắc chắn rằng bạn đang gói SqlConnection của bạn bên trong một ProfiledDbConnection.

Lưu ý rằng bạn không cần bật tiện ích trực quan để tiện ích này hoạt động, chỉ cần đảm bảo rằng tiểu sử được bắt đầu trước và kết thúc sau mỗi yêu cầu.

Tiếp theo, trong global.asax.cs nơi hồ sơ cá nhân cho yêu cầu đó được dừng lại, sửa đổi nó như sau:

protected void Application_EndRequest() 
{ 
    // not production code! 
    MiniProfiler.Stop(); 

    var logger = NLog.LogManager.GetCurrentClassLogger(); 

    var instance = MiniProfiler.Current; 

    if (instance == null) return; 

    var t = instance.GetSqlTimings(); 

    foreach (var sqlTiming in t) 
    { 
     logger.Debug(sqlTiming.CommandString); 
    } 
} 

này nghĩa là bãi lệnh SQL được thực thi, nhưng có nhiều thông tin bao gồm trong mô hình nếu bạn muốn báo cáo thêm thông tin nâng cao.

Các vấn đề liên quan