2009-05-04 25 views
19

Tôi đang sử dụng LINQ để Nhibernate để kích hoạt một số truy vấn chọn vào cơ sở dữ liệu.Cách biết truy vấn được tạo bởi Fluent NHibernate

Câu hỏi của tôi là, làm cách nào để biết, truy vấn được tạo bởi Fluent NHibernate?

+3

Fluent NHibernate ** không ** tạo bất kỳ truy vấn nào. Đó là NHibernate tạo ra chúng. –

+0

Tôi nghĩ câu hỏi này có thể giúp bạn: http://stackoverflow.com/questions/474659/how-to-log-sql-calls-with-nhibernate-to-the-console-of-visual-studio – HerbalMart

Trả lời

5

Nếu bạn muốn SQL nằm trong log4net, hãy đảm bảo bạn đặt trình ghi nhật ký trong phần cấu hình của mình.

Tôi đặt gói NHibernate tại "INFO" để giảm nhiễu và NHibernate.SQL cho tất cả để tôi có thể ghi nhật ký tất cả các câu lệnh SQL.

 
<logger name="NHibernate"> 
    <level value="INFO" /> 
</logger> 


    <logger name="NHibernate.SQL"> 
    <level value="ALL" /> 
    </logger> 

2

Xem this. Những gì bạn cần là hibernate.show_sql.

+0

cảm ơn .. ............. –

+7

Làm thế nào để bạn cấu hình với Fluent NHibernate? –

35

Với thành thạo NHibernate, bạn có thể bật show_sql như thế này:

Fluently.Configure() 
    .Database(MsSqlConfiguration.MsSql2005.ShowSql().ConnectionString(...))... 

NHibernate bây giờ sẽ in tất cả các câu lệnh SQL để Console.Out.

+1

Xin chào Kevin, Cảm ơn bạn đã đăng bài này! Tôi tự hỏi nếu bạn cũng đã nối Log4Net vì vậy nó sẽ gửi SQL tạo ra một tập tin? – 5x1llz

+13

Điều này thật khó chịu. Bất kỳ ý tưởng tại sao điều này sẽ không bao giờ làm việc? Tôi đang xem qua Bảng điều khiển của mình và nó không có ở đó. – Milimetric

0

Bạn có thể sử dụng profilers sql như this one quá.

-1

Bạn cũng có thể móc trong log4net.

0

Chắc chắn mua và sử dụng NHProf. Đây là một sản phẩm tuyệt vời và không chỉ cho bạn thấy những truy vấn nào đang được chạy, mà còn cho bạn thấy bất kỳ vấn đề hiệu suất tiềm năng nào với ánh xạ và truy vấn NHibernate của bạn.

2

Tôi đã tìm thấy 4 tùy chọn để biết truy vấn sql trong nhibernate và thông thạo nhibernate.

  1. Nhật ký - Joey V. cho biết câu trả lời cho cùng một câu hỏi này.
  2. ShowSql - Kevin Berridge nói trong câu trả lời của cùng một câu hỏi này.
  3. NHProf - Đây là một hồ sơ tuyệt vời. NHProf
  4. Intercepter - Thật tuyệt khi thấy sql. chúng ta có thể đặt nó trong đầu ra của Visual Studio và thậm chí trong tệp nhật ký.

    ISessionFactory sf = Fluently.Configure() 
         .Database(MySQLConfiguration.Standard.ConnectionString(ConnectionString).ShowSql()) 
         .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Stock>()) 
         .ExposeConfiguration(c => c.SetInterceptor(new ABCInterceptor())) 
         .BuildSessionFactory(); 
    
    
    public class ABCInterceptor : EmptyInterceptor 
    { 
        public override NHibernate.SqlCommand.SqlString OnPrepareStatement(NHibernate.SqlCommand.SqlString sql) 
        { 
         Trace.WriteLine(sql.ToString()); 
         return sql; 
        } 
    } 
    
Các vấn đề liên quan