Nhibernate запрос очень медленный по сравнению с ADO.NET - PullRequest
0 голосов
/ 06 февраля 2019

Я новичок в 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-запрос медленный

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...