У меня проблема с сохранением объектов с помощью NHibernate.Переменная отчета ниже не содержит изменений, но NHibernate выдает исключение ниже:
другой объект с таким же значением идентификатора уже был связан с сеансом: 262, объекта: xxx.Report
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] закомментирована, исключений нет, но мне нужно внести изменения в переменную отчета перед ее сохранением.Например, используйте строку ниже в строке [2]:
report.Children = report.Children;
UPDATE : отчет загружается вне метода SaveReport с использованием другого сеанса, и session.dispose () былПозвонил.
Может кто-нибудь сказать, пожалуйста
1) почему NHibernate генерирует исключение, даже если переменная отчета не имеет изменений,
2) Почему нет исключения, когда строка [1] комментируетсяout.
Заранее спасибо!