Я новичок в NHibernate и у меня большая проблема с этим запросом.С NHibernate запрос занимает 40 секунд, чтобы получить 8000 записей с 12 столбцами.Это мой код:
Сущность
Public Class Comuni
Private _ID_Comuni As Integer
Private _Nome_Comune As String
Private _Provincia As String
Private _Nome_Stato As String
Private _Sigla_Stato As String
Private _Europeo As Boolean
Private _Cap As String
Private _Codice_ISTAT As String
Private _Codice_Catastale As String
Private _Tribunale As Boolean
Private _ID_Comuni_Tribunale As Integer?
Private _Popolazione As Integer?
Public Overridable Property IDComuni() As Integer
Get
Return Me._ID_Comuni
End Get
Set
Me._ID_Comuni = Value
End Set
End Property
' All other get and set
End Class
Код карты
Public Class ComuniMap
Inherits ClassMap(Of Comuni)
Public Sub New()
MyBase.New
LazyLoad()
Id(Function(x) x.IDComuni).Column("IDComuni").GeneratedBy().Increment()
Map(Function(x) x.NomeComune).Column("NomeComune")
Map(Function(x) x.Provincia)
Map(Function(x) x.NomeStato).Column("NomeStato")
Map(Function(x) x.SiglaStato).Column("SiglaStato")
Map(Function(x) x.Europeo)
Map(Function(x) x.Cap)
Map(Function(x) x.CodiceISTAT).Column("CodiceISTAT")
Map(Function(x) x.CodiceCatastale).Column("CodiceCatastale")
Map(Function(x) x.Tribunale)
Map(Function(x) x.IDComuniTribunale).Column("IDComuniTribunale")
Map(Function(x) x.Popolazione)
End Sub
End Class
Метод
Public Function GetAll() As IList(Of T) Implements IGenericDAO(Of T, S).GetAll
Dim list As IList = New List(Of T)
Dim stateLessSession As IStatelessSession = _sessionFactory.GetCurrentStateLessSession
Try
list = stateLessSession.CreateCriteria(GetType(T)).List(Of T)
Catch ex As Exception
Debug.Print(ex.Message)
logger.Debug(ex.Message)
Throw New Exception()
End Try
Return list
End Function
В режиме отладки следующая строка:
list = stateLessSession.CreateCriteria(GetType(T)).List(Of T)
Занимает все время.С ADO.NET тот же запрос занимает 1,6 с, что является приемлемым временем и более реалистичным, чем 30 с.Вы можете мне помочь?Спасибо
Я попробовал решение, приведенное ниже, безуспешно:
Запрос NHibernate чрезвычайно медленный по сравнению с жестко закодированным SQL-запросом
и здесь:
NHibernate SQL-запрос медленный