nhibernate无法初始化代理 - 没有Session + asp.net mvc

时间:2010-09-30 06:48:31

标签: asp.net-mvc nhibernate

在行动中我从db获取了一些数据。 现在在视图中我想从一个字段中获取值,该字段是从lazyload的其他表引用的,我得到此错误: 无法初始化代理 - 没有会话

我想知道我现在能做些什么。

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; }
         //...
    }

1 个答案:

答案 0 :(得分:3)

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

  1. 保持会话开放,直到webrequest完成
  2. 急切加载作者
  3. 将作者加载到控制器中而不是视图中。