如何從視圖內訪問ActiveRecord模型的延遲加載屬性?ASP.NET MVC 1.0和Castle ActiveRecord 2.0懶加載
我有一個消息模型屬於一個類別型號,兩者都被標記爲懶惰=真
我能夠做訪問延遲加載的特性,我認爲在我的控制器
以下using (new SessionScope())
{
results = _service.FindAllNews(start, pageSize, new[] { Order.Asc("Id") });
foreach (var result in results)
{
var category = result.Category;
}
}
return View(results);
然後在我看來,我通過結果分析和處理以下
<%= Html.Encode(item.Category.Title) %>
顯然顯示類別標題,如果我不引用屬性我在我的控制器中,當試圖調用視圖中的屬性時,會出現會話範圍錯誤。
但這對我來說似乎是錯誤的。在到達視圖之前是否有更好的方式來初始化模型的延遲加載屬性?我想我可以在模型中編寫一個Init函數,但是這看起來也不錯。
我用普通的NHibernate碰到了同樣的事情。我不得不最終將我的事務移到BeginRequest和EndRequest。 – mxmissile 2009-09-04 20:49:40
你的評論應該是一個答案,mxmissile。每個請求有一個SessionScope可以解決他的問題,但是如果使用自動刷新,則必須小心。 – wtaniguchi 2009-09-04 20:51:40
是的,但我不熟悉AR的SessionScope或AR,不知道它是否屬於常規的NHibernate,換句話說沒有感覺合格...... ;-) – mxmissile 2009-09-04 21:10:45