From 0978f4cabb0b41611d7927939e368023acfc42fe Mon Sep 17 00:00:00 2001 From: Alex Zaytsev Date: Sun, 4 Feb 2024 19:38:30 +1000 Subject: [PATCH] Fix null reference exception when running tests with Npgsql 8 (#3480) --- .../PostgresExceptionConverterExample.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/NHibernate.Test/ExceptionsTest/PostgresExceptionConverterExample.cs b/src/NHibernate.Test/ExceptionsTest/PostgresExceptionConverterExample.cs index e4142c32f7f..ee794f0b9de 100644 --- a/src/NHibernate.Test/ExceptionsTest/PostgresExceptionConverterExample.cs +++ b/src/NHibernate.Test/ExceptionsTest/PostgresExceptionConverterExample.cs @@ -1,6 +1,6 @@ using System; -using System.Data.Common; using NHibernate.Exceptions; +using Npgsql; namespace NHibernate.Test.ExceptionsTest { @@ -10,23 +10,23 @@ public class PostgresExceptionConverterExample : ISQLExceptionConverter public Exception Convert(AdoExceptionContextInfo exInfo) { - var sqle = ADOExceptionHelper.ExtractDbException(exInfo.SqlException) as DbException; - if (sqle != null) + if (ADOExceptionHelper.ExtractDbException(exInfo.SqlException) is PostgresException pge) { - string code = (string)sqle.GetType().GetProperty("Code").GetValue(sqle, null); - + string code = pge.SqlState; if (code == "23503") { - return new ConstraintViolationException(exInfo.Message, sqle.InnerException, exInfo.Sql, null); + return new ConstraintViolationException(exInfo.Message, pge.InnerException, exInfo.Sql, null); } + if (code == "42P01") { - return new SQLGrammarException(exInfo.Message, sqle.InnerException, exInfo.Sql); + return new SQLGrammarException(exInfo.Message, pge.InnerException, exInfo.Sql); } } + return SQLStateConverter.HandledNonSpecificException(exInfo.SqlException, exInfo.Message, exInfo.Sql); } #endregion } -} \ No newline at end of file +}