una ultimos reemplazar recortar quitar obtener los extraer ejemplos caracteres caracter cadena buscar c# .net neo4j cypher neo4jclient

c# - ultimos - Neo4j.NET Client Ejecuta las consultas de cadena de caracteres



split c# (2)

Oficialmente documentado en https://github.com/Readify/Neo4jClient/wiki/cypher#manual-queries-highly-discouraged

Sin embargo, esto será malo para el rendimiento y arriesgado para la seguridad.

Es malo para el rendimiento, porque tendrá que volver a analizar cada consulta. Debe usar parámetros, como en el ejemplo en https://github.com/Readify/Neo4jClient/wiki/cypher-examples#create-a-user. De esta forma, el texto de la consulta permanece constante, y solo el parámetro varía, por lo que no incurrir en el costo de compilación de consultas en cada llamada.

Es arriesgado para la seguridad, porque puede obtener la codificación erróneamente y exponerse a riesgos de inyección.

Por lo tanto, no realice consultas manuales a menos que realmente comprenda lo que está haciendo. Están ocultos a propósito.

¿Es posible ejecutar consultas CYPHER como simples cadenas antiguas usando el Cliente Neo4j .NET o cualquier otro módulo?

Por ejemplo, si quiero agregar algunos nodos a mi base de datos de gráficos y ya tuve ensamblados los enunciados, ¿hay algún medio para ejecutar una cadena?

CREATE (n:Edit {name:"L-1154LX"});

Estoy buscando procesar por lotes una lista de consultas CREATE CYPHER que ya se han creado.


Estoy escribiendo una aplicación .NET que permite la extracción de nodos y relaciones de hojas de cálculo de Excel para que puedan generarse dinámicamente y cargarse en neo4j (ver el modelo de objeto de traducción / gestión a continuación).

Cuando los cargue en neo4j a través del neo4jclient no sabré cómo se ven mis nodos en tiempo de ejecución; pueden tener cualquier cantidad de atributos y estos pueden tener cualquier nombre y valor. En los ejemplos en https://github.com/Readify/Neo4jClient/wiki/cypher-examples , parece que debería tener clases locales para referirme a los nombres y valores de los atributos; pero esto no funcionará ¿Me estoy perdiendo un truco aquí? consultas parametrizadas? (incluso estos ejemplos esperaban una clase codificada localmente).

public class Node { public string NodeType = ""; public List<Attribute> Attributes; public List<Relationship> ParentRelationships; public List<Relationship> ChildRelationships; public Node(string nodeType) { NodeType = nodeType; Attributes = new List<Attribute>(); ParentRelationships = new List<Relationship>(); ChildRelationships = new List<Relationship>(); } public void AddAttribute(Attribute attribute) { //We are not allowing empty attributes if(attribute.GetValue() != "") this.Attributes.Add(attribute); } public string GetIdentifier() { foreach (Attribute a in Attributes) { if (a.IsIdentifier) return a.GetValue(); } return null; } public void AddParentRelationship(Relationship pr) { ParentRelationships.Add(pr); } public void AddChildRelationship(Relationship cr) { ChildRelationships.Add(cr); } public class Attribute { private string Name; private string Value; public bool IsIdentifier; public Attribute(string name, string value, bool isIdentifier) { SetName(name); SetValue(value); IsIdentifier = isIdentifier; } public void SetName(string name) { Name = name.Trim(); } public void SetValue(string value) { Value = value.Trim(); } public string GetName() { return Name; } public string GetValue() { return Value; } }