From 69c3962f213aa505e9dabf85dca48ff9df2bf970 Mon Sep 17 00:00:00 2001 From: Jeavon Leopold Date: Tue, 28 Oct 2014 08:46:07 +0000 Subject: [PATCH 1/2] Fix for U4-5698 - EntityService.GetObjectType throws for deleted Id's --- src/Umbraco.Core/Persistence/PetaPoco.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Umbraco.Core/Persistence/PetaPoco.cs b/src/Umbraco.Core/Persistence/PetaPoco.cs index 21f97643ec..c387373a3b 100644 --- a/src/Umbraco.Core/Persistence/PetaPoco.cs +++ b/src/Umbraco.Core/Persistence/PetaPoco.cs @@ -562,6 +562,12 @@ namespace Umbraco.Core.Persistence { object val = cmd.ExecuteScalarWithRetry(); OnExecutedCommand(cmd); + + if (val == null && typeof(T) == typeof(Guid)) + { + val = Guid.Empty; + } + return (T)Convert.ChangeType(val, typeof(T)); } } From 419531f373fdf4b1dfab2ee21fa6fc558b0c027c Mon Sep 17 00:00:00 2001 From: Jeavon Leopold Date: Fri, 31 Oct 2014 13:29:03 +0000 Subject: [PATCH 2/2] Fix for U4-5698 - using method logic from NPoco as it works :) --- src/Umbraco.Core/Persistence/PetaPoco.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Umbraco.Core/Persistence/PetaPoco.cs b/src/Umbraco.Core/Persistence/PetaPoco.cs index c387373a3b..8839504791 100644 --- a/src/Umbraco.Core/Persistence/PetaPoco.cs +++ b/src/Umbraco.Core/Persistence/PetaPoco.cs @@ -563,12 +563,13 @@ namespace Umbraco.Core.Persistence object val = cmd.ExecuteScalarWithRetry(); OnExecutedCommand(cmd); - if (val == null && typeof(T) == typeof(Guid)) - { - val = Guid.Empty; - } + if (val == null || val == DBNull.Value) + return default(T); - return (T)Convert.ChangeType(val, typeof(T)); + Type t = typeof(T); + Type u = Nullable.GetUnderlyingType(t); + + return (T)Convert.ChangeType(val, u ?? t); } } finally