Так что я делаю поиск в почтовом индексе, предоставляемый внешним поставщиком данных в базе данных, которую мы контролируем с помощью nHibernate. Это включает вызов хранимой процедуры и предоставление почтового индекса. Взамен я получаю несколько строк, каждая из которых содержит несколько столбцов, составляющих части адреса.с помощью nHibernate для передачи неотображаемых данных в DTO
У нас есть адрес DTO. Но я борюсь с тем, как отбрасывать результаты БД в этот объект, поскольку он не привязан к чему-либо в базе данных. Я делаю это:
Dim spCall As String = String.Format("exec AddressFindListPostCode '{0}'", postcode)
Dim tran As Global.NHibernate.Transform.IResultTransformer = Global.NHibernate.Transform.Transformers.AliasToBean(GetType(Concrete.Cms.DataTransferObjects.Address))
Dim streetList As IList(Of Concrete.Cms.DataTransferObjects.Address) = session.CreateSQLQuery(spCall).SetResultTransformer(tran).List(Of Concrete.Cms.DataTransferObjects.Address)()
Но, конечно, это не может преобразовать результирующий набор в объект без какой-либо помощи от отображения какой-то.
Проблема в том, что SP возвращает список объектов. Каждый объект (эквивалентный строке) содержит под-объекты, соответствующие столбцам внутри строки. Но я не вижу возможности получить под-объекты. streetList (i, j) не будет работать, и нет методов или свойств на StreetList, которые позволят мне получить к ним доступ.
Как получить данные для его отображения?
Приветствия, Matt
Я просто попытался это, и хотя он компилирует и работает. мой объект списка возвращается пустым. Dto, который я построил, скорее длиннее вашего примера с двумя свойствами, но не более сложным (просто связкой строк) .. какие-нибудь идеи, что происходит? –
Получил это - между набором записей и Dto было несоответствие имен. Спасибо - как обычно, nHibernate оказывается умнее, чем я ожидал :) –
Рад, что это сработало. :) – rebelliard