NHibernate JoinQueryOver и Transforming - NHibernate.Exceptions.GenericADOException не удалось выполнить запрос - PullRequest
0 голосов
/ 09 марта 2019

Я занимаюсь разработкой веб-приложения на Vb.Net и NHibernate. Я хотел бы выполнить пример внутреннего соединения через NHibernate (NO CreateSQLQuery) между двумя объектами. Я пытаюсь выполнить следующий блок кода, но получаю сообщение об ошибке.

Dim list As IList = New List(Of AttiByEnteDTO)

Dim attiByEnteDTO As AttiByEnteDTO = Nothing
Dim attiAlias As Atti = Nothing
Dim schedaEnteAlias As SchedaEnte = Nothing
ist = session.QueryOver(Of Atti)(Function() attiAlias) _
                    .JoinQueryOver(Of SchedaEnte)(Function(p) p.Scheda_Ente, Function() schedaEnteAlias) _
                    .SelectList(Function(l) l _
                        .Select(Function(a) attiAlias.Descrizione).WithAlias(Function() attiByEnteDTO.Descrizione) _
                        .Select(Function(a) attiAlias.Scadenza).WithAlias(Function() attiByEnteDTO.Scadenza) _
                        .Select(Function(a) schedaEnteAlias.Ragione_Sociale).WithAlias(Function() attiByEnteDTO.Ragione_Sociale)) _
                .TransformUsing(Transformers.AliasToBean(Of AttiByEnteDTO)).List(Of AttiByEnteDTO)()

Вот сообщение об ошибке (из блока try-catch):

could not execute query
[ SELECT this_.Descrizione as y0_, this_.Scadenza as y1_, alias_$vb$local_1_.RagioneSociale as y2_ from  `Atti` this_ inner join `SchedaEnte` alias_$vb$local_1_ on this_.IDEnte=alias_$vb$local_1_.IDEnte ]
[SQL: SELECT this_.Descrizione as y0_, this_.Scadenza as y1_, alias_$vb$local_1_.RagioneSociale as y2_ from  `Atti` this_ inner join `SchedaEnte` alias_$vb$local_1_ on this_.IDEnte=alias_$vb$local_1_.IDEnte]

и внутреннее сообщение об исключении

{"Syntax error in FROM clause."}

Класс сопоставления Atti и SchedaEnte

Public Class AttiMap
        Inherits ClassMap(Of Atti)

        Public Sub New()
            MyBase.New
            LazyLoad()
            Id(Function(x) x.IDAtto).Column("IDAtto").GeneratedBy().Increment()
            Map(Function(x) x.Descrizione)
            Map(Function(x) x.Scadenza)
            References(Function(x) x.Scheda_Ente, "IDEnte")
        End Sub
    End Class

 Public Class SchedaEnteMap
        Inherits ClassMap(Of SchedaEnte)

        Public Sub New()
            MyBase.New
            LazyLoad()
            Id(Function(x) x.ID_Ente).Column("IDEnte").GeneratedBy().Increment()
            Map(Function(x) x.Ragione_Sociale).Column("RagioneSociale")
            HasMany(Function(x) x.ListAtti).KeyColumn("IDEnte")
        End Sub
    End Class

Доменный класс Atti и SchedaEnte

Public Class Atti

        Private _ID_Atto As Integer?
        Private _Descrizione As String
        Private _Scadenza As Integer?
        Private _Scheda_Ente As SchedaEnte

        Public Overridable Property IDAtto() As Integer?
            Get
                Return Me._ID_Atto
            End Get
            Set(value As Integer?)
                Me._ID_Atto = Value
            End Set
        End Property

        Public Overridable Property Descrizione() As String
            Get
                Return Me._Descrizione
            End Get
            Set
                Me._Descrizione = Value
            End Set
        End Property

        Public Overridable Property Scadenza() As Integer?
            Get
                Return Me._Scadenza
            End Get
            Set
                Me._Scadenza = Value
            End Set
        End Property
        Public Overridable Property Scheda_Ente As SchedaEnte
            Get
                Return _Scheda_Ente
            End Get
            Set(value As SchedaEnte)
                _Scheda_Ente = value
            End Set
        End Property
End Class

Public Class SchedaEnte

        Private _ID_Ente As Integer?
        Private _Ragione_Sociale As String
        Private _ListAtti As IList(Of Atti)

        Public Overridable Property ID_Ente() As Integer?
            Get
                Return Me._ID_Ente
            End Get
            Set
                Me._ID_Ente = Value
            End Set
        End Property

        Public Overridable Property Ragione_Sociale() As String
            Get
                Return Me._Ragione_Sociale
            End Get
            Set
                Me._Ragione_Sociale = Value
            End Set
        End Property

        Public Overridable Property ListAtti As IList(Of Atti)
            Get
                Return _ListAtti
            End Get
            Set(value As IList(Of Atti))
                _ListAtti = value
            End Set
        End Property
End Class

Класс DTO

Public Class AttiByEnteDTO

        Private _Descrizione As String
        Private _Scadenza As Integer?
        Private _Ragione_Sociale As String

        Public Property Descrizione() As String
            Get
                Return Me._Descrizione
            End Get
            Set(value As String)
                Me._Descrizione = value
            End Set
        End Property

        Public Property Scadenza() As Integer?
            Get
                Return Me._Scadenza
            End Get
            Set(value As Integer?)
                Me._Scadenza = value
            End Set
        End Property

        Public Property Ragione_Sociale() As String
            Get
                Return Me._Ragione_Sociale
            End Get
            Set(value As String)
                Me._Ragione_Sociale = value
            End Set
        End Property
End Class

Кто-то может мне пример почему?
Заранее спасибо.

...