From db971bb0b90d12b0915255b8969c8d560a7f034a Mon Sep 17 00:00:00 2001 From: Morten Christensen Date: Wed, 9 Jan 2013 11:44:30 -0100 Subject: [PATCH] Fixes U4-1418 caused by a size issue in PetaPoco when inserting a string larger then 4000 characters. --- src/Umbraco.Core/Persistence/PetaPoco.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Persistence/PetaPoco.cs b/src/Umbraco.Core/Persistence/PetaPoco.cs index d60525a91c..aa531a7c62 100644 --- a/src/Umbraco.Core/Persistence/PetaPoco.cs +++ b/src/Umbraco.Core/Persistence/PetaPoco.cs @@ -424,7 +424,14 @@ namespace Umbraco.Core.Persistence } else if (t == typeof(string)) { - p.Size = Math.Max((item as string).Length + 1, 4000); // Help query plan caching by using common size + // out of memory exception occurs if trying to save more than 4000 characters to SQL Server CE NText column. Set before attempting to set Size, or Size will always max out at 4000 + if ((item as string).Length + 1 > 4000 && p.GetType().Name == "SqlCeParameter") + p.GetType().GetProperty("SqlDbType").SetValue(p, SqlDbType.NText, null); + + p.Size = (item as string).Length + 1; + if(p.Size < 4000) + p.Size = Math.Max((item as string).Length + 1, 4000); // Help query plan caching by using common size + p.Value = item; } else if (t == typeof(AnsiString))