Эта проблема очень странная, так как она работает во многих других местах нашего менеджера данных. По какой-то причине любой новый код, написанный как ниже, не выдает ошибку, но не обновляется в базе данных. Сеанс в системной памяти выглядит корректно, но при вызове .Commit()
никаких изменений не происходит.
using (var scope = new UnitOfWorkScope())
{
InsuranceCertificate cert = _certificateRepository.SingleOrDefault(x => x.Id == certId);
cert.Status = new Enumeration<CertificateStatus>(CertificateStatus.Rejected);
cert.RejectedDate = DateTime.Now;
cert.RejectedReason = reason;
_certificateRepository.Add(cert);
scope.Commit();
scope.Complete();
}
Мы используем Fluent Nhibernate и Castle Windsor, если это имеет значение. Опять же, предыдущий код, аналогичный приведенному выше, работает, как и ожидалось, но любой новый код не работает.
Поскольку мы используем сессию напрямую, я мало что нашел по этой теме. Есть идеи?
EDIT
log4net регистрирует следующее: 2012-01-24 11: 39: 13,475 [37] DEBUG NHibernate.Event.Default.AbstractSaveEventListener [(null)] <(null)> - постоянный экземпляр: IDOI.Certificate.Domain .Model.Policy.InsuranceCertificate 2012-01-24 11: 39: 13,475 [37] ОТЛАДКА NHibernate.Event.Default.DefaultSaveOrUpdateEventListener [(null)] <(null)> - игнорирование постоянного экземпляра 2012-01-24 11:39: 13,475 [37] DEBUG NHibernate.Event.Default.DefaultSaveOrUpdateEventListener [(null)] <(null)> - объект, уже связанный с сеансом: [IDOI.Certificate.Domain.Model.Policy.InsuranceCertificate # 5]