Neo4jClient - Pobieranie relacji z zapytania Cypher
Mam problem z wyszukiwaniem dopasowanych relacji z zapytania Cypher.
Mam ten prosty kod próbny:
var movie = client.Create(new Movie { Title = "The Matrix" });
client.Create(new Actor { Name = "Keanu Reeves" },
new ActedIn(movie, new ActedInPayload { Role = "Neo" }));
client.Create(new Actor { Name = "Hugo Weaving" },
new ActedIn(movie, new ActedInPayload { Role = "Agent Smith" }));
var actorsAndRoles = client
.Cypher
.Start(new { movie = movie })
.Match("actor-[r:ACTED_IN]->movie")
.Return((actor, r) => new
{
Actor = actor.As<Node<Actor>>()
// ActedIn = r.As<?????>()
})
.Results;
Problem polega na tym, że nie mogę znaleźć sposobu na rzucenie r (z dopasowaną relacją).
Próbowałem różnych rzutów typu „.As”, ale żaden nie działa. Rzucanie na relację nie działa, ponieważ moja klasa relacji nie ma konstruktora bez parametrów - ale wtedy klasa bazowa relacji nie ma samego konstruktora bez parametrów, więc nie myśl, że to zadziała. Z drugiej strony rzucanie na RelationshipReference powoduje wyjątek. Nie rzucanie w ogóle (po prostu powrót r) powoduje wyjątek „nieobsługiwany”.
Istnieją pewne powiązane wpisy SO dotyczące tego problemu, ale sugerowany tam kod albo nie działa, albo jest przestarzały.
Jak odzyskać dopasowaną relację?