Neo4jClient: удалить отношения

У меня есть следующий шифрованный запрос:

start n=node(0)
match (n)-[:USER_BELONGS_TO]-(x)-[r]->(y)
where (x.EmailAddress = '[email protected]')
and (y.EmailAddress = '[email protected]')
and (type(r) = 'FOLLOWS')
delete r;

Как заставить Neo4jClient делать то же самое? (и дайте мне указание, что запрос выполнен успешно или не удалось)

Я думал примерно так:

var results = new CypherFluentQuery(_dataOperations.GraphClient)
                  .Start("n", _dataOperations.GraphClient.RootNode)
                  .Match(string.Format("(n)-[:{0}]-(x)-[r]->(y)", UserBelongsTo.TypeKey))
                  .Where(string.Format("x.EmailAddress! ='{0}'", follower))
                  .And()
                  .Where(string.Format("y.EmailAddress! ='{0}'", leader))
                  .And()
                  .Where(string.Format("type(r) = '{0}'", Follows.TypeKey))
                  .Delete("r")
                  .Results;

Однако Delete() не работает в этом контексте.

Если бы я мог получить RelationshipReference, я мог бы вызвать метод

void DeleteRelationship(RelationshipReference reference);

но я не знаю, можете ли вы получить RelationshipReference через шифрование, и когда я пытаюсь выполнить следующий запрос.

 var results = new CypherFluentQuery(_dataOperations.GraphClient)
              .Start("n", _dataOperations.GraphClient.RootNode)
              .Match(string.Format("(n)-[:{0}]-(x)-[r]->(y)", UserBelongsTo.TypeKey))
              .Where(string.Format("x.EmailAddress! ='{0}'", follower))
              .And()
              .Where(string.Format("y.EmailAddress! ='{0}'", leader))
              .And()
              .Where(string.Format("type(r) = '{0}'", Follows.TypeKey))
              .Return<RelationshipReference<Follows>>("r")
              .Results
              .SingleOrDefault();

Я получаю следующее «Для этого объекта не определен конструктор без параметров», когда десериализация происходит внутри Neo4jClient. В любом случае, я хотел бы сделать все это в одном запросе, а не в двух.


person Aran Mulholland    schedule 09.10.2012    source источник
comment
Вместо .Where(string.Format(x.EmailAddress! ='{0}', подписчик)), .Where‹User›(x =› x.EmailAddress == подписчик) будет намного безопаснее.   -  person Tatham Oddie    schedule 22.03.2013


Ответы (1)