1
我有一個關於我編寫的代碼來調用使用NHibernate的過程的問題,填充未映射的實體,然後獲取子實體列表。NHibernate - 從未映射的類填充子實體
我會告訴你一個例子。三個實體:房子,興趣,用戶
class house
string name; string title; string description;
list<interest> users;
我使用興趣作爲一類房屋和用戶之間的關係,因爲我喜歡的排名了一些額外的屬性,評論說,我需要保存。
class interest
house houseinterested;
user userinterested;
int ranking; string descriptions;
而且用戶類
class user
string name
,因爲我需要查詢所有的房子withing的區域範圍,我做了一個存儲過程計算(發送緯度/長),和然後我返回一個額外的財產距離,我需要顯示的意見。
我不想給距離映射表(因爲我只是找回它,我從來沒有存儲值),所以我已經建立了類似的另一實體的房子,但與距離財產(houseview) ,我查詢的步驟,使用CreateSQLQuery:
const string sql = "call imovel_within_area (:@orig_lat, :@orig_long, :@dist, :@take, :@skip, :@quartos, :@precomin, :@precomax)";
var query = MvcApplication.Session.CreateSQLQuery(sql)
.SetParameter("@dist", distancia)
.SetParameter("@orig_lat", latitude) //-25.363882m
.SetParameter("@orig_long", longitude) // 131.044922m
.SetParameter("@take", resultados)
.SetParameter("@skip", ((pagina-1 * resultados)))
.SetParameter("@quartos", quartos.Value)
.SetParameter("@precomin", precomin.Value)
.SetParameter("@precomax", precomax.Value);
query.SetResultTransformer(NHibernate.Transform.Transformers.AliasToBean(typeof(Core.Domain.houseview)));
現在我想填補感興趣的用戶列表。
foreach (var housein houses.List<Core.Domain.houseview>())
{
house.Where(x => x.Id == house.Id).ToList().First().Interest =
MvcApplication.Session.QueryOver<Core.Domain.House>()
.Where(x => x.Id == imovel.Id).List().First().Interessados;
}
我從來沒有從查詢返回unmaped列,所以我不太清楚如何做到這一點,或者如果這是對性能問題接受。
我真的很感激一些建議!
謝謝