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
,然后正在处理会话。然后一些其他代码试图访问返回的 job
的 Interview
属性,这需要会话来实现延迟加载功能,但会话已被释放。
您可以更改您的查询,使 Interview
为 'pre-fetched',或者您可以更改您的映射,以便 class 或 属性 上没有惰性初始化。
我正在尝试在我的项目中使用 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
,然后正在处理会话。然后一些其他代码试图访问返回的 job
的 Interview
属性,这需要会话来实现延迟加载功能,但会话已被释放。
您可以更改您的查询,使 Interview
为 'pre-fetched',或者您可以更改您的映射,以便 class 或 属性 上没有惰性初始化。