2013-05-03 4 views
2

Я новичок в Neo4j и Neo4jClient. Я пытаюсь обновить существующие отношения. Вот как я создал отношения.Обновление отношений/полезной нагрузки с Neo4jClient

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

Для этого конкретного случая использования я хотел бы обновить Полезную нагрузку всякий раз, когда Узлы и отношения уже существуют. Я использую Cypher в основном с Neo4jClient.

Цените любую помощь!

ответ

3

Используйте эту IGraphClient подпись:

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

Как это:

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

Update: Синтаксис немного неудобно прямо сейчас, где CreateRelationship только возвращает RelationshipReference вместо RelationshipReference<TData> но Update требует последнего, поэтому вам нужно явно его бросить. Честно говоря, мы, вероятно, не будем это исправлять в ближайшее время, так как все инвестиции для Neo4j и Neo4jClient будут направлены на выполнение мутаций через Cypher.

+0

Спасибо. Я получаю ошибки. Когда я использую это. _graphClient.Update (item2RefAddedBefore, p => {p.Frequency = 1;}); Я получаю эту ошибку ---- Ошибка Аргумент 2: не может преобразовать из 'lambda expression' в 'ProjectNamespace.Form1.Payload' – Anshul

+0

Вторая ошибка: Ошибка Аргумент 1: невозможно преобразовать из 'Neo4jClient.RelationshipReference' to 'Neo4jClient.NodeReference ' – Anshul

+0

Я исправил код в ответе. –

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