2015-11-12 3 views
1

Im получая ошибку/исключение, когда им пытаются получить ResultSet, выполнив следующий метод:Neo4j Readify клиент/драйвера: Невозможно десериализации объект

public IEnumerable<NeoProduct> GetAllProductsUnderCategory(int categoryId) 
       { 
      var query = neo.Cypher.Match("(c:Category{CategoryId:{id}})<-[*](p:Product)") 
    .WithParam("id", categoryId) 
    .Return(p => p.As<NeoProduct>()).Results; 
      } 

Как вы можете видеть его очень простой метод, который возвращает список NeoProducts. АВК является простым ПОК со следующими свойствами:

public int CategoryId { get; set; } 
    public string CategoryName { get; set; } 
    public int ParentCategoryId { get; set; } 

StackTrace является:

[OverflowException: Value was either too large or too small for an Int64.] 
     System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt) +14278344 
     System.String.System.IConvertible.ToInt64(IFormatProvider provider) +55 
     System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +14285879 
     Neo4jClient.Serialization.CommonDeserializerMethods.CoerceValue(DeserializationContext context, PropertyInfo propertyInfo, JToken value, IEnumerable`1 typeMappings, Int32 nestingLevel) in D:\temp\tmpC806\Neo4jClient\Serialization\CommonDeserializerMethods.cs:101 
     Neo4jClient.Serialization.CommonDeserializerMethods.Map(DeserializationContext context, Object targetObject, JToken parentJsonToken, IEnumerable`1 typeMappings, Int32 nestingLevel) in D:\temp\tmpC806\Neo4jClient\Serialization\CommonDeserializerMethods.cs:365 
     Neo4jClient.Serialization.CommonDeserializerMethods.CreateAndMap(DeserializationContext context, Type type, JToken element, IEnumerable`1 typeMappings, Int32 nestingLevel) in D:\temp\tmpC806\Neo4jClient\Serialization\CommonDeserializerMethods.cs:303 
     Neo4jClient.Serialization.<>c__DisplayClass17_0.<ParseInSingleColumnMode>b__1(JToken row) in D:\temp\tmpC806\Neo4jClient\Serialization\CypherJsonDeserializer.cs:437 
     System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +223 
     System.Linq.Buffer`1..ctor(IEnumerable`1 source) +264 
     System.Linq.Enumerable.ToArray(IEnumerable`1 source) +106 
     Neo4jClient.Serialization.CypherJsonDeserializer`1.Deserialize(String content) in D:\temp\tmpC806\Neo4jClient\Serialization\CypherJsonDeserializer.cs:64 
    [ArgumentException: Neo4j returned a valid response, however Neo4jClient was unable to deserialize into the object structure you supplied. 

Для метода, я передаю аргумент, который возвращает результирующий-набор, содержащий 900 объектов (результат из браузера Neo4J). В противном случае метод, похоже, работает по назначению.

Я подозреваю, что объект JSON слишком велик для внутреннего десериализатора. У кого-то была эта проблема?

+0

Подтвердили ли вы, что объект JSON слишком велик? Что произойдет, если вы вернете один продукт? – ceej

+0

Это никогда не было объектом JSON для просмотра; в базе данных содержатся грязные данные. :) –

+0

Я думал, что это может быть - сообщения об исключении обычно не лежат! Рад, что ты справился. – ceej

ответ

5

Я обнаружил проблему. В базе данных существовала сущность, у которой было очень длинное число, которое было больше, чем int64, заставив десериализатор выбросить исключение (пыталось вставить число, большее, чем int64, в свойство int64).

Сегодняшний урок: Убедитесь, что данные вписываются в модель :)

+0

Ницца ... спасибо, что указали это ...! –

Смежные вопросы