Итак, я делаю поиск по почтовому индексу, предоставленному сторонним поставщиком данных, в базе данных, которой мы управляем с помощью nHibernate. Это включает вызов хранимой процедуры и предоставление почтового индекса. В ответ я получаю количество строк, каждая из которых содержит несколько столбцов, составляющих части адреса.
У нас есть адрес 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 нет методов или свойств, которые позволили бы мне получить к ним доступ.
Как мне вывести свои данные на карту?
Cheers,
Matt