所以我正在使用外部数据提供程序在我们用nHibernate控制的数据库上进行邮政编码查找。这涉及调用存储过程并提供邮政编码。作为回报,我得到了许多行,每行包含构成地址部分的多个列。
我们有一个地址DTO。但我正在努力解决如何将DB结果转换为此对象,因为它没有映射到数据库中的任何内容。我这样做:
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上没有允许我访问它们的方法或属性。
如何获取数据以进行映射?
干杯, 马特
答案 0 :(得分:7)
您可以尝试将数据批量加载到批量类中,例如:
Dim result As IList(Of BulkLoadAddressList) = session.CreateSQLQuery(spCall)
.SetResultTransformer(Transformers.AliasToBean(typeof(BulkLoadAddressList)))
.List(Of BulkLoadAddressList)()