2
votes

I am new to Neo4j and Neo4jClient. I am trying to update an existing relationship. Here is how I created the relationship.

var item2RefAddedBefore = _graphClient.CreateRelationship((NodeReference<Item>)item2Ref,
                new AddedBefore(item1Ref, new Payload() { Frequency = 1 }));

For this particular use case, I would like to update the Payload whenever the Nodes and relationship already exist. I am using Cypher mostly with the Neo4jClient.

Appreciate any help!

1

1 Answers

3
votes

Use this IGraphClient signature:

void Update<TRelationshipData>(RelationshipReference<TRelationshipData> relationshipReference, Action<TRelationshipData> updateCallback)
    where TRelationshipData : class, new();

Like this:

graphClient.Update(
    (RelationshipReference<Payload>)item2RefAddedBefore,
    p => { p.Foo = "Bar"; });

Update: The syntax is a little awkward right now, where CreateRelationship only returns a RelationshipReference instead of a RelationshipReference<TData> but Update requires the latter, so you need to explicitly cast it. To be honest, we probably won't fix this any time soon as all of the investment for both Neo4j and Neo4jClient is going towards doing mutations via Cypher instead.