2013-01-31 81 views
3

我有使用功能NHibernate和NHibernate的應用程序,我有一個通用的DAO類,在這個類我有通用的方法,堅持數據,但我想創建一個通用的方法來刪除來自一個表的所有記錄。在這一刻我有這種方法:刪除表中的所有行NHibernate的

Public Sub ClearTable(ByVal sTable As String) 
    Using session = SessaoNHibernate.OpenSession() 
     Using transaction = session.BeginTransaction() 
      Try 
       session.CreateSQLQuery("delete from " & sTable).ExecuteUpdate() 
       transaction.Commit() 
       session.Flush() 
      Catch ex As Exception 
       transaction.Rollback() 
      End Try 
     End Using 
    End Using 
End Sub 

我有一個泛型類,所以我想創建一個方法,不需要傳遞表名稱。因爲泛型類知道他的類型。

回答

5

只是不要運行它作爲一個SQL查詢,並可以通過類名來代替:

session.CreateQuery("delete from EntityClass").ExecuteUpdate() 
+2

感謝。我這樣做:「session.CreateQuery(」刪除「&GetType(T).ToString()).executeUpdate()」,它解決了我的問題。 –