У меня есть объектная модель C#, которую я хочу сохранить с Neo4j. Он содержит десятки проектов, каждый из которых имеет 1000-4000 детей. В настоящее время я использую официальный драйвер C#, но я могу переключиться на что-то еще. Выполнение этого одного ребенка за раз, неудивительно, неэффективно. Это занимает несколько минут для одного проекта:Как создать много узлов и отношений с Neo4j.Driver.V1
foreach (var service in project.Services)
{
using (var session = _driver.Session())
{
var query = "MATCH (p:Project) WHERE ID(p) = " + neoId +
" CREATE (ds:Service {name:\"" + service.Name +
"\"})<-[:HAS_SERVICE]-(p)";
var result = session.Run(query);
}
}
Я Cypher нуб, но я понимаю, что я, вероятно, следует передать детям в качестве параметров запроса, включающего UNWIND
или FOREACH
, но это мне не ясно, как этот будет происходить программно, так как необязательный второй параметр равен Run()
либо Dictionary
, либо object
(непонятно, как этот объект будет интерпретироваться). Итак, как это сделать эффективно с C#?
Где определена переменная 'neoId'? –
'neoId' длинный. Код - всего лишь фрагмент, чтобы дать представление о том, чего я хочу достичь. Не задано '' '' '' '' '' '' '' '. –