Neo4j check создает лучшие практики - PullRequest
0 голосов
/ 19 июня 2020

Я использую клиент Neo4J для C#, и я пытаюсь создать несколько уникальных узлов. Я уже создал индекс и уникальное ограничение в базе данных, поэтому я уверен, что дублирование невозможно, но я хочу определить, когда создание узла не удалось из-за нарушения уникального ограничения.

Я новичок в Neo4j, но я вижу, что общие примеры следуют (плохой) практике использования ExecuteWithoutResults для выполнения такого рода запросов, поэтому нет никакой обратной связи о выполнении создания, и я также вижу, что не создается никаких исключений, если создание не удалось.

Как лучше всего получить результат от команды создания узла? После фрагмента кода, показывающего, как я создаю узел:

await client.Cypher                            
.Merge("(u:User { UserId: {userId}})")
.OnCreate()
.Set("u = {user}")
.WithParams(new
{
userId = user.UserId,                        
user
})
.ExecuteWithoutResultsAsync();

1 Ответ

0 голосов
/ 21 июня 2020

Если вам не удастся создать узел, исключение будет передано клиенту.

Однако - ваш код использует MERGE - так что этого не произойдет в любом случае. Используя Neo4jClient - нет способа получить отзыв X nodes created.

Вы можете изменить свой код на .Return(u => u.As<User>()) и проверить результаты, но это единственный способ, который я могу придумать.

...