Ostatnio mam ten problem. Przechowywałem komunikat „status” w polu nvarcharMAX DB, które ma 4000 znaków. Jednak moje komunikaty o stanie narastały i trafiały w wyjątek.
Nie był to jednak prosty przypadek obcięcia, ponieważ dowolne obcięcie oznaczałoby oddzielenie części komunikatu o stanie, więc naprawdę musiałem „obciąć” spójną część ciągu.
Rozwiązałem problem, konwertując ciąg na tablicę ciągów, usuwając pierwszy element, a następnie przywracając go do ciągu. Oto kod („CurrentStatus” to ciąg przechowujący dane) ...
if (CurrentStatus.Length >= 3750)
{
string[] statusArray = CurrentStatus.Split(new string[] { "." }, StringSplitOptions.None)
.Skip(1).ToArray();
CurrentStatus = (string.Join(".", statusArray))
.Replace("\\r\\n", Environment.NewLine);
}
Mam nadzieję, że to komuś pomoże.