NHibernate.LazyInitializationException .Net 网站 API

NHibernate.LazyInitializationException .Net Web API

我正在尝试在我的项目中使用 NHibernate,但出现以下错误 "Initializing[BO.Job#34543]-failed to lazily initialize a collection of role: BO.Job.bInterview, no session or session was closed"。谁能帮帮我。

public HttpResponseMessage GetbyId(int Id)
        {
            Job job = new Job();
            try
            {
                using (ISession session = NHibernateSession.OpenSession())  // Open a session to conect to the database
                {
                    // books = session.Query<Book>().ToList(); //  Querying to get all the jobs
                    JobRepo = new Repo<Job>(session);
                    job = JobRepo.GetById(Id, "Job_selectbyId");
                }
                return Request.CreateResponse(HttpStatusCode.OK, job);

            }
            catch (Exception exp)
            {
                Log.Error(exp);
                return Request.CreateResponse(HttpStatusCode.ExpectationFailed, job);
            }
        }

public T GetById(int id,string SPName)
        {
            T result;
            //return await Task.Run(() =>
            //{
                IQuery query = _session.GetNamedQuery(SPName);
                query.SetParameter("job_id", id);
                //book = _session.Query<Book>().Where(b => b.Id == id).FirstOrDefault();
                result = query.UniqueResult<T>();
                return result;
            //});
        }

这可能是因为您正试图访问一个 属性,它在会话关闭后被标记为 'lazy'。

我的猜测是您要返回 job,然后正在处理会话。然后一些其他代码试图访问返回的 jobInterview 属性,这需要会话来实现延迟加载功能,但会话已被释放。

您可以更改您的查询,使 Interview 为 'pre-fetched',或者您可以更改您的映射,以便 class 或 属性 上没有惰性初始化。