2010-09-30 75 views
1

在行动中,我从数据库采取了一些数据。 现在,鉴于我想从与其他表引用与lazyload一个字段取值,我得到这个错误: 无法初始化代理 - 没有会话nhibernate无法初始化代理 - 没有会话+ asp.net mvc

我不知道我现在可以做。

public ActionResult Index() 
     { 
      using (NHUnitOfWork.Start()) 
      { 
       var news = articlesRepository.News(0, 20); 
       return View(news); 
      } 
     } 

<%= Html.ActionLink(Html.Encode(Model.Author.Login), "zyx", "xyz") %> 

public ArticleMap() 
     { 
      References(x => x.Author).Not.Nullable().LazyLoad().Column("Author").Cascade.SaveUpdate(); 
     //... 
     } 

    public class Article : EntityBase<int> 
    { 
     public virtual User Author { get; set; } 
     //... 
    } 

回答

3

您只能在会话打开时访问数据库。你可以做三件事情:

  1. 会话保持打开状态,直到WebRequest的完成
  2. 急于负载笔者
  3. 负载笔者在控制器,而不是在视图中。
相关问题