Невозможно создать узел с меткой в ​​​​качестве строкового параметра из функции - в Neo4JClient

Я использую Neo4JClient для заполнения узлов в Neo4JDB.

У меня есть функция, которая вызывается для создания узлов и их маркировки. Первый параметр — это метка, а второй параметр — это атрибут узла.

 function CreateConcpet( String sLabelString, String sDataSpaceName)
 {
     var newConcept = new Concept {DataSpace=sDataSpaceName};

     client.Cypher
         .Create("(concept:{labelstring} {ParamnewConcept})")
         .WithParam("ParamnewConcept",newConcept)
         .WithParam("labelstring",sLabelString)
         .ExecuteWithoutResults();
 }

При этом используется параметр для замены метки.

Это не работает. Из различных сообщений я понимаю, что WithParam не работает для меток.

Если страшный ExecuteCypher — единственный способ, может ли кто-нибудь помочь мне с фрагментом кода, который выполняет строку как запрос. Я не могу найти фрагмент кода, в то время как документация дает вызов, я не могу найти образец, который создает объект запроса и выполняет строковый запрос.


person cheenu    schedule 26.12.2014    source источник


Ответы (2)


Вы не можете параметризовать вещи, которые повлияют на скомпилированный план запроса. Метки используются в плане запроса, поэтому без параметров.

Это общее ограничение работы параметров в Neo4j, а не только в Neo4jClient.

person Tatham Oddie    schedule 26.12.2014
comment
Спасибо, Тэтэм Одди, я понял это из ваших предыдущих постов. Не могли бы вы помочь мне с фрагментом кода о том, как выполнить CypherQuery из строки, созданной для этой цели. Я получил это из документа ((IRawGraphClient)client).ExecuteCypher(query). Фрагмент кода С#, который использует это из строки, содержащей CypherQuery, был бы очень полезен. - person cheenu; 27.12.2014
comment
Я пробовал следующее: String qry=; qry=Создать n:Person; Клиент GraphClient = новый GraphClient (новый Uri (localhost:7474/db/data)); клиент.Соединить(); var results = ((IRawGraphClient)client).ExecuteGetCypherResults(новый CypherQuery(qry,null, Neo4jClient.Cypher.CypherResultMode.Projection)); При выполнении я получаю следующую ошибку: Сообщение об ошибке компилятора: CS0411: Аргументы типа для метода «Neo4jClient.IRawGraphClient.ExecuteGetCypherResults‹TResult›(Neo4jClient.Cypher.CypherQuery)» не могут быть выведены из использования. Попробуйте явно указать аргументы типа. - person cheenu; 27.12.2014

У меня была та же самая проблема, которая (после долгого скрежета зубов) была легко решена ...

У меня было два типа узлов: Person и Union. Эти две строки пометили их

MATCH (n) where n.surname >' ' SET n :Person

MATCH (n) where n.surname is null SET n :Union

Это зависело от двух типов узлов, имеющих разные метаданные, которые их отличали.

person David A Stumpf    schedule 06.01.2015