У меня есть следующий шифрованный запрос:
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. В любом случае, я хотел бы сделать все это в одном запросе, а не в двух.