Comment accéder à une propriété chargée paresseuse d'un modèle ActiveRecord à partir de la vue?ASP.NET MVC 1.0 et Castle ActiveRecord 2.0 Chargement paresseux
J'ai un modèle de nouvelles appartenant à un modèle de catégorie, les deux qui sont marqués comme Lazy = true
Je suis en mesure d'accéder à une propriété chargée paresseux à mon avis en procédant comme suit dans mon contrôleur
using (new SessionScope())
{
results = _service.FindAllNews(start, pageSize, new[] { Order.Asc("Id") });
foreach (var result in results)
{
var category = result.Category;
}
}
return View(results);
Puis, à mon avis, je Parse à travers les résultats et afficher le titre de la catégorie avec le
suivant<%= Html.Encode(item.Category.Title) %>
Il est évident que si je ne fait pas référence à la i propriété Dans mon contrôleur, j'obtiens une erreur de portée de session lorsque j'essaie d'appeler la propriété dans la vue.
Mais cela me semble faux. Y a-t-il une meilleure façon d'initialiser les propriétés de chargement paresseux d'un modèle avant d'atteindre la vue? Je suppose que je pourrais écrire une fonction Init dans le modèle, mais cela semble aussi bidon.
Je suis tombé sur la même chose avec NHibernate régulière. Je devais finir par déplacer ma transaction vers BeginRequest et EndRequest. – mxmissile
Votre commentaire devrait être une réponse, mxmissile. Avoir un seul SessionScope par requête résoudrait son problème, bien que vous deviez faire attention en utilisant des vidages automatiques. – wtaniguchi
Oui, mais je ne suis pas familier avec AR SessionScope ou AR d'ailleurs, pas sûr si son utilisation transaciton est la même que NHibernate régulière, en d'autres termes ne se sentait pas qualifié .. ;-) – mxmissile