Мне нужно зарегистрировать пользовательское исключение для диалекта NHibernate. Я реализовал и
зарегистрирован ISqlExceptionConverter, как показано в тестах NHibernate. Но
когда исключение в коде бросает, это не преобразовано. Мой код конверсии
даже не звонит.
Мой код действительно прост:
try
{
using (ISession sess = OpenSession())
using (ITransaction tx = sess.BeginTransaction())
{
....
sess.Save(obj); // invalid object scheduled for inserting
.....
tx.Commit(); // exception raises here
}
}
catch (UniquenessViolationException ex)
{
// never came here, since exception was not converted and is of type
HibernateException
}
Моя реализация ISqlExceptionConverter:
public class SqlExceptionConverter : ISQLExceptionConverter
{
public Exception Convert(AdoExceptionContextInfo exInfo)
{
var sqlEx = ADOExceptionHelper.ExtractDbException
(exInfo.SqlException) as SqlException;
if (sqlEx != null)
{
if (sqlEx.Number == 2627)
return new UniquenessViolationException(exInfo.Message, sqlEx,
exInfo.Sql);
}
return SQLStateConverter.HandledNonSpecificException
(exInfo.SqlException, exInfo.Message, exInfo.Sql);
}
Может быть, я что-то пропустил?