используя nHibernate для приведения несопоставленных данных в DTO - PullRequest
3 голосов
/ 27 сентября 2010

Итак, я делаю поиск по почтовому индексу, предоставленному сторонним поставщиком данных, в базе данных, которой мы управляем с помощью 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

1 Ответ

7 голосов
/ 27 сентября 2010

Вы можете попробовать массовую загрузку данных в массовый класс, например:

 Dim result As IList(Of BulkLoadAddressList) = session.CreateSQLQuery(spCall)
    .SetResultTransformer(Transformers.AliasToBean(typeof(BulkLoadAddressList)))
    .List(Of BulkLoadAddressList)()

Подробнее: Специальное отображение NHibernate

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