2012-08-15 56 views
0

我是nhibernate的新手(但在之前使用過hibernate for java)。nhibernate日誌sql for postgres但不適用於sql server

我建了一個會話工廠爲我們的SQL Server數據庫(SQL Server企業版8)

ISessionFactory factory2 = Fluently.Configure() 
    .Database(MsSqlConfiguration.MsSql2008 
    .ConnectionString(@"user id=xx; password=xxx;server=xxx;initial catalog=xxx") 
    .ShowSql() 
) 
    .Mappings(m => m.FluentMappings 
    .AddFromAssemblyOf<Program>()) 
    .ExposeConfiguration(cfg => new SchemaValidator(cfg).Validate()) 
    .BuildSessionFactory(); 

所以我用ShowSql()方法來查詢登錄到控制檯。

在我PROGRAMM我加載/創建兩個對象,並希望堅持他們,然後做一個更新上一列:

using (var session = sf.OpenSession()) 
{ 
    session.FlushMode = FlushMode.Always; 
    using (var ta = session.BeginTransaction()) 
    { 
     Console.ReadKey(); 
     PMA pm = session.CreateCriteria<PMA>() 
      .Add(Restrictions.Eq("Name", "HANSER")).List<PMA>().FirstOrDefault(); 
     if (pm == null) 
     { 
      pm = new PMA(); 
      pm.Prio = "1"; 
      pm.Name = "HANSER"; 
      pm.Datum = DateTime.Now; 
      session.Save(pm); 
     } 

     Clip clip = new Clip(); 
     clip.PMA = pm; 
     clip.sys_created = DateTime.Now; 
     clip.sys_name = "system name"; 
     clip.Title = "Test"; 
     session.Save(clip); 

     Console.ReadKey(); 

     clip.Title = "PETERSEN"; 
     session.SaveOrUpdate(clip); 
     session.Transaction.Commit(); 
     session.Flush(); 
     session.Dispose(); 

     Console.ReadKey(); 
    } 
} 

爲下午對象的第一次插入會在控制檯上登錄,但其他插入和剪輯對象的更新不會顯示在控制檯中。當我查看數據庫時,我發現一切正常,所有內容都會被插入和更新。但我想查看查詢。我嘗試將刷新模式設置爲始終,然後創建一個session.Flush()到最後的會話,然後是session.Dispose(),但沒有任何更改。

當我使用postgres(只更改sessionfactory)時,我看到所有查詢日誌。 如何讓nhibernate記錄所有的SQL Server查詢?

回答

1

當使用ADO.NET批處理(默認情況下在SQL Server中支持它)時,DML查詢不會記錄到控制檯。