Я использую этот кусок кода как часть моего класса AuditTrail, но перед попыткой зарегистрировать изменения в базе данных я столкнулся с execOverFlow Exception.NHibernate Interceptor, аудит и ведение журнала в базе данных
public void OnPostInsert(NHibernate.Event.PostInsertEvent @event)
{
if (!(@event.Entity is IAuditable))
{
using (ITransaction transaction = @event.Session.BeginTransaction())
{
if (@event.State != null)
{
for (int i = 0; i < @event.State.Length; i++)
{
string propertyName = @event.Persister.PropertyNames[i];
if (@event.State[i] != null)
{
if (@event.State[i].GetType().Namespace.StartsWith("Averma.Fda.Domain"))
{
CompareIfOldStateIsNull(@event.State[i], Convert.ToInt32(@event.Id), @event.Entity.GetType().ToString(), @event.Session, false);
}
else
{
string auditEntry = "New value for " + SplitPropertyName(propertyName) + " has been added, the new value is " + @event.State[i];
@event.Session.Save(new AuditTrail() { AuditEntry = auditEntry, RelatedEntityId = Convert.ToInt32(@event.Id), RelatedEntityType = @event.Entity.GetType().ToString(), OperationType = Shared.Enums.OperationType.Insert });
}
}
}
}
transaction.Commit();//the error occurs here
}
}
}
Может ли кто-нибудь объяснить мне, как решить эту проблему, и как я могу регистрировать изменения в базе данных.
Я думаю, ваше пространство имен не начинается с 'Averma.Fda.Domain'. Таким образом, появляется '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'который, Бесконечная история. Вам лучше отладить его и проверить, куда идет нежелательный цикл. Должно быть легко найти. – C4u