2

我使用流利的nhibernate在運行時使用3個會話創建3個數據庫。流利Nhibernate映射不創建後刪除並添加相同的數據庫

ISessionFactory sessionFactory = Fluently.Configure() 
      .Database(MsSqlConfiguration 
      .MsSql2008 
      .ConnectionString(c => c 
       .Server(databaseServer) 
       .Database(dataBaseName) 
       .Username("sa").Password("sa123_MTTS"))) 
       .Mappings(m => m.FluentMappings.AddFromAssemblyOf<NHibernateSessionFactory>()) 
       .ExposeConfiguration(c => c.SetProperty("command_timeout", (System.TimeSpan.FromMinutes(10).TotalSeconds).ToString())) 
       .ExposeConfiguration(BuildSchema) 
       .BuildSessionFactory(); 

private static void BuildSchema(Configuration config) 
{ 
    new SchemaUpdate(config).Execute(false, true); 
} 

例:

在這裏,我創建包含 「123」, 「234」, 「345」 名稱的數據庫。

然後我刪除數據庫123

刪除我現在宣佈會議閉幕也

sessionfactory.Close(); 

後再次與我同名的數據庫添加爲刪除的數據庫,「123」。

SchemaUpdate(config).Execute() 

被調用。 Nhibernate創建數據庫,但這些表不是在數據庫中創建的,我沒有得到任何異常。

我不知道這有什麼問題。

回答

0

如果您有權訪問SQL Profiler,請在執行代碼時運行它,並查看您是否從SQL獲取了有關NHibernate試圖執行的代碼的消息。

我已經看到情況是NHibernate從SQL中獲取一個錯誤,並且不會將它報告給客戶端。這主要是外鍵違規或在SQL中設置爲不可空的列,但用NHibernate映射爲可爲空。錯誤的結果是未報告的SQL代碼回滾。

SQL事件探查器中的錯誤應該讓您更好地瞭解發生了什麼。