Rebonjour à tous,
J'ai de nouveau un problème. Pour commencer, voici mon code :
Study Controller (Couche GUI) :
Study Manager (Couche BLL) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ViewResult Index(string search) { var studies = StudyManager.SelectAll(); return View(studies); }
Study Repository (Couche DAL) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public static List<Study> SelectAll() { return StudyRep.Select(); }
On voit que le Repository des Studies se crée un contexte pour charger la liste complète des studies.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public static ICollection<Study> Select() { using (PrismaDAL dal = new PrismaDAL()) { return dal.Studies.ToList(); } }
Le souci est que dans ma vue, j'aimerai accéder à un sous objet (une Phase) de chaque étude de la liste :
Au moment ou ma vue est exécutée, le contexte est déjà détruit et le lazy-loading est donc impossible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @if (Model.Phase != null) { @Html.ActionLink(Model.Phase.Label, "Details/" + Model.Phase.Id.ToString(), "Codelist") }
Ma question :
Comment faire pour que mon sous-objet soit accessible ? Comment avoir un contexte qui "vit" assez longtemps pour permettre le lazy-loading dans la vue.
Je me suis renseigné avant de poster évidemment, voici les solutions possibles :
- Créer le context dans le controller, mais la division en couche n'est pas respectée.
- Une autre option (qui est plus conseillée) est d'avoir un contexte par requete. En chipotant dans le global.asax, ca semble possible, mais je n'y arrive pas... Comment faire ?
A+ et merci bcp![]()
Partager