Возврат результата как проблема анонимного объекта - PullRequest
1 голос
/ 13 февраля 2020

Я столкнулся со следующей проблемой: когда я выполняю запрос, который возвращает результат в анонимном объекте:

var query = this.GraphClient.Cypher
.Match($"(e:{SystemNodeLabelEnum.Product.ToString()} {{MyId: "{myId}"}})")
.Return(e => new { SystemNode = e.As<SystemNode>() })
.OrderBy("e.NodeId")
.Skip(offset)
.Limit(limit);

это исключение запроса:

Exception:
Exception has been thrown by the target of an invocation.
Inner exception:
Conversion of ZonedDateTime to INode is not supported.
   at Neo4j.Driver.V1.TemporalValue.System.IConvertible.ToType(Type conversionType, IFormatProvider provider)
   at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) in /_/src/System.Private.CoreLib/shared/System/Convert.cs:line 377
   at System.Convert.ChangeType(Object value, Type conversionType) in /_/src/System.Private.CoreLib/shared/System/Convert.cs:line 315
   at Neo4j.Driver.V1.ValueExtensions.As[T](Object value)
   at Neo4jClient.StatementResultHelper.Parse[T](IRecord record, String identifier, IGraphClient graphClient)

Когда я изменил возвращаемый тип, который будет конкретным объектом (не анонимным) следующим образом:

public class SystemNodeContainer
{
   public SystemNode Node { get; set; }
}

тот же запрос выполняется правильно и возвращает правильный результат.

var query = this.GraphClient.Cypher
.Match($"(e:{SystemNodeLabelEnum.Product.ToString()} {{MyId: "{myId}"}})")
.Return(e => new SystemNodeContainer { SystemNode = e.As<SystemNode>() })
.OrderBy("e.NodeId")
.Skip(offset)
.Limit(limit);

Не могли бы вы посоветовать?

...