locked
Непонятная ошибка ArgumentOutOfRangeException RRS feed

  • Общие обсуждения

  • Добрый день!

    На телефоне выполняется запрос:

    SELECT [t0].[PhoneCodes_ID] AS [ID], @p101 + [t0].[PhoneCodes_Code] AS [phnPrfx], (@p102 + [t0].[PhoneCodes_Code]) + [t0].[PhoneCodes_From] AS [phnPrfx2], (@p103 + [t0].[PhoneCodes_Code]) + [t0].[PhoneCodes_To] AS [phnPrfx3], [t0].[PhoneCodes_Capacity] AS [CapacityData], [t0].[PhoneCodes_Operator] AS [OperatorData], [t1].[PhoneRegions_Region] AS [RegionValueData], [t3].[value]
    FROM [PhoneCodes] AS [t0]
    LEFT OUTER JOIN [PhoneRegions] AS [t1] ON [t1].[PhoneCodes_ID] = [t0].[PhoneCodes_ID]
    CROSS APPLY (
        SELECT COUNT(*) AS [value]
        FROM [PhoneRegions] AS [t2]
        WHERE [t2].[PhoneCodes_ID] = [t0].[PhoneCodes_ID]
        ) AS [t3]
    WHERE ([t0].[PhoneCodes_Code] = @p0) AND ([t0].[PhoneCodes_ID] IN (@p-- @p0: Input String (Size = 3; Prec = 0; Scale = 0) [495]

    -- @p1: Input Int32 (Size = 4; Prec = 0; Scale = 0) [11021]
    -- @p2: Input Int32 (Size = 4; Prec = 0; Scale = 0) [11022]
    ...
    -- @p99: Input Int32 (Size = 4; Prec = 0; Scale = 0) [25671]
    -- @p100: Input Int32 (Size = 4; Prec = 0; Scale = 0) [25672]
    -- @p101: Input String (Size = 1; Prec = 0; Scale = 0) [7]
    -- @p102: Input String (Size = 1; Prec = 0; Scale = 0) [7]
    -- @p103: Input String (Size = 1; Prec = 0; Scale = 0) [7]
    -- Context: SqlProvider(SqlCE) Model: AttributedMetaModel Build: System.Data.Linq, Version=7.0.0.0, Culture=neutral, PublicKeyToken=24EEC0D8C86CDA1E

    Иногда запрос выполняется, а иногда нет. В отладчике такое сообщение появляется если запрос не выполнен:

    "TaskHost.exe" (Управляемый код): Загружен "System.SR.dll"
    Первый этап обработки исключения типа "System.ArgumentOutOfRangeException" в mscorlib.dll

    Приложение при невыполнении запроса не прерывается. Просто запрос ничего не находит.

    Как понять где ошибка?


    13 ноября 2012 г. 11:29

Все ответы

  • Добрый день.

    Обычно такая ошибка возникает, когда агрументы метода выходят за ожидаемые границы. У вас длины строк укладываются в заявленные диапазоны?

    И если не сложно, то покажите код вызова...

    13 ноября 2012 г. 18:37
    Отвечающий
  • Вот смотрите, этот запрос работает:

    from itemInfo in mainDB.PhoneCodes
    where
      (from itemRegs2 in responseIDs5 select itemRegs2).Contains(itemInfo.PhoneCodes_ID)
    select new PhoneInfoItem
    {
    ...
    }, _cancellationToken);

     

    А этот запрос ничего не находит (из-за той ошибки):

    from itemInfo in mainDB.PhoneCodes
    where
      itemInfo.PhoneCodes_Code == QueryParts5[0] &&
      (from itemRegs2 in responseIDs5 select itemRegs2).Contains(itemInfo.PhoneCodes_ID)
    select new PhoneInfoItem
    {
    ...
    }, _cancellationToken);

    Если искать '988' 'новороссийск', то находит 3 записи. Если искать '988' 'нов', то ничего не находит (возникает ошибка). Верхний запрос всё отрабатывает нормально.

    • Изменено Andy V. Solo 13 ноября 2012 г. 19:03
    13 ноября 2012 г. 19:02
  • Привет.

    Ваша проблема еще нуждается в поиске решения? Что такое у вас QueryParts5[0] - это ваши входные данные? Убедитесь что здесь есть нулевое значение всегда, добавьте проверку, это наиболее вероятное место возникновения вашего исключения.


    Для связи [mail]

    23 ноября 2012 г. 8:35