2013-09-24 26 views
7

Tôi đã bật ServiceStack MiniProfiler trong AppHost của mình (trong Application_Start) và tôi có thể xem SQL được tạo bởi OrmLite trong trang của tôi. (sử dụng SS v3.9.59.0)ServiceStack MiniProfiler có thể hiển thị các giá trị tham số SQL, không chỉ các tên tham số bị ràng buộc?

Điều tôi không thể xem trong theo dõi tiểu sử là giá trị của tham số ràng buộc. Vì vậy, nếu OrmLite dịch một biểu thức LINQ thành @ 0, tôi không thể thấy giá trị được gửi đến DB như một phần của truy vấn.

Dưới đây là một ví dụ dấu vết từ các hồ sơ:

SELECT "SettingGroup" , "SettingKey" , "LastModified" , "SettingValue" 
FROM "GlobalSetting" 
WHERE (("SettingGroup" = @0) AND ("SettingKey" = 'a3849d59864b252a2022b4b8a164add1')) 

Tôi thực sự muốn biết những gì giá trị đã được gửi cho @0 cho truy vấn này.

protected void Application_Start(object sender, EventArgs e) 
{ 
    Profiler.Settings.SqlFormatter = new InlineFormatter(true); 
    new AppHost().Init(); 
} 

Tôi đã thử một vài biến thể của Profiler.Settings.SqlFormatter tài sản:

  • SqlFormatter = new InlineFormatter();
  • SqlFormatter = new InlineFormatter(true);
  • SqlFormatter = new SqlServerFormatter();
  • Không đặt SqlFormatter ở tất cả, để lại nó ở giá trị mặc định của nó

Tất cả đều có cùng kết quả, chỉ hiển thị @0 nhưng không có giá trị của nó.

Nếu tôi nhấp vào liên kết "Chia sẻ", tôi có thể thấy cả tên thông số bị ràng buộc và giá trị của nó trong mảng JSON kết quả. Tôi chỉ không thể nhìn thấy nó trong đầu ra profiler rendered.

Bất kỳ ý tưởng nào tôi cần làm để hiển thị giá trị tham số?

Trả lời

3

trả lời có thể được tìm thấy ở đây: Can MvcMiniProfiler display SQL parameter values?

Thêm phần này vào Application_Start

MiniProfiler.Settings.SqlFormatter = 
    new StackExchange.Profiling.SqlFormatters.SqlServerFormatter(); 

Tuy nhiên có vẻ là một vấn đề nhỏ khi sử dụng nvarchar/varchar as type tham số. Xem này topic.

+0

Không. Điều đó không hiệu quả. Đoạn mã bạn đã đăng hoạt động cho dự án MvcMiniProfiler ban đầu, không phải từ ngã ba được nhúng trong ServiceStack. Mã phân chia SS sẽ là: Profiler.Settings.SqlFormatter = new ServiceStack.MiniProfiler.SqlFormatters.SqlServerFormatter(); nhưng vẫn không hoạt động. Tôi chỉ thấy biểu tượng @ 0 nhưng không thấy giá trị của @ 0 –

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