首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate会话,保存更新,保存

NHibernate会话,保存更新,保存
EN

Stack Overflow用户
提问于 2011-10-14 19:41:27
回答 1查看 1.4K关注 0票数 0

我在使用NHibernate保存对象时遇到了问题。下面的report变量没有任何更改,但是NHibernate在下面抛出异常:

具有相同标识符值的不同对象已经与会话: 262,实体: xxx.Report相关联。

代码语言:javascript
复制
 pulic void SaveReport(Report report)
    {
         using (ISession session = NH.OpenSession())
        using (ITransaction transaction = session.BeginTransaction())
        {

            var childReport = session.QueryOver<Report>()
           .Where(x => x.ReportParent.Id == report.Id)
           .Fetch(x => x.Children).Eager
  .List().Distinct().ToList(); -- [1] refers to the line starting with .List()

           --[2]  report.Children = report.Children;

              session.SaveOrUpdate(report);
              transaction.Commit();

                    }
      }


          class Report
          {
            public virtual int Id { get; set; }
            public virtual IList<Report> Children { get; set; }
           public virtual Report ReportParent { get; set; }
          }

如果第1行被注释掉,也没有例外,但我需要在保存它之前对report变量进行更改。例如,使用第2行下面的行

代码语言:javascript
复制
          report.Children = report.Children;

UPDATE:使用其他会话在SaveReport方法之外加载报表,并调用了session.dispose()。

有谁能告诉我

1)为什么NHibernate抛出异常甚至报告变量都没有更改,

2)当第1行被注释掉时,为什么没有例外。

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2011-10-15 13:18:38

在您的评论之后:您输入一个Report对象,该对象可能仍然附加到检索该会话的会话。您必须先将它与该会话分离(Session.Evict)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7772755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档