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?
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?
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>
Xem this. Những gì bạn cần là hibernate.show_sql
.
cảm ơn .. ............. –
Làm thế nào để bạn cấu hình với Fluent NHibernate? –
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
.
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
Đ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
Bạn cũng có thể tìm thấy hữu ích http://nhprof.com/
Bạn có thể sử dụng profilers sql như this one quá.
Bạn cũng có thể móc trong log4net.
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.
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.
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;
}
}
Fluent NHibernate ** không ** tạo bất kỳ truy vấn nào. Đó là NHibernate tạo ra chúng. –
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