C# Neo4jClient:与OnCreate合并会导致密码查询中断

C# Neo4jClient:与OnCreate合并会导致密码查询中断,c#,neo4jclient,C#,Neo4jclient,我们将Neo4j社区3.2.2与Neo4jClient 2.0.0.9一起使用,并尝试创建一个不存在的节点。这在下面的和类似的问题中都有涉及,所以我们认为这应该是非常直截了当的: public class KlientNode { [JsonProperty(PropertyName = "id")] public Guid Id { get; set; } } 以及: 因此,我们基本上复制了示例1:1 不幸的是,这会导致以下输出和异常: MERGE (klient:Klien

我们将Neo4j社区3.2.2与Neo4jClient 2.0.0.9一起使用,并尝试创建一个不存在的节点。这在下面的和类似的问题中都有涉及,所以我们认为这应该是非常直截了当的:

public class KlientNode
{
    [JsonProperty(PropertyName = "id")]
    public Guid Id { get; set; }
}
以及:

因此,我们基本上复制了示例1:1

不幸的是,这会导致以下输出和异常:

MERGE (klient:Klient { id: "80248429-ea80-4a5d-8d4e-88dc1499ea8a" })
ON CREATE
SET klient = {
  "id": "80248429-ea80-4a5d-8d4e-88dc1499ea8a"
}
Neo4jClient.NeoException: SyntaxError: Invalid input 'N': expected 'p/P' (line 5, column 2 (offset: 250))
"ON CREATE"
      ^
原因似乎是
SET klient=…
查询中
id“
周围的引号。如果我将生成的查询粘贴到neo4j web控制台,它会显示语法错误,如果我删除引号,查询运行正常


当我们几乎一字不差地复制示例时,有人知道是什么原因导致了查询中断吗?

FWIW,我不知道为什么会发生这种情况,但我们能够解决它,如下所示:

var kq = graphClient.Cypher
    .Merge($"(klient:{NodeName} {{ id: {{klientId}} }})")
    .OnCreate()
    .Set("klient = {neuerKlient}").WithParams(new
    {
        klientId = ev.KlientId,
        neuerKlient = new KlientNode
        {
            Id = ev.KlientId,
        },
    });
    Console.WriteLine(kq.Query.DebugQueryText);
    kq.ExecuteWithoutResults();
调试输出仍然相同(忽略不同的随机Guid):

如果我尝试将查询粘贴到neo4j web前端,查询仍然会被破坏:

但是,查询现在执行时没有异常


由于唯一的更改是匿名对象中
neuerKlient
属性的简写定义,因此我假设内部存在导致错误的行为(即使调试查询输出相同)。

如果删除JsonProperty属性,它是否有效?否,我还测试了没有JsonProperty的版本(在合并查询中使用大写的
Id
),这是一个控制台应用程序吗?核心?Asp?4.6.1控制台应用程序,没有Asp。我很高兴您将其排序,DebugQueryText属性仅用于调试,如果您没有参数,它将在浏览器中工作。客户端正在插入参数的值以确保可读性。我不知道为什么使用插值有效,当我逐字复制您的代码时,我无法让它失败。我想你是在德德岛上吧?我可以到处玩,看看是否能让它失败。是的,英语Visual Studio,但德语语言环境设置。但我认为这不值得努力,它现在工作得很好,谢谢:)
var kq = graphClient.Cypher
    .Merge($"(klient:{NodeName} {{ id: {{klientId}} }})")
    .OnCreate()
    .Set("klient = {neuerKlient}").WithParams(new
    {
        klientId = ev.KlientId,
        neuerKlient = new KlientNode
        {
            Id = ev.KlientId,
        },
    });
    Console.WriteLine(kq.Query.DebugQueryText);
    kq.ExecuteWithoutResults();
MERGE (klient:Klient { id: "87798b47-ab1b-49b7-9c5e-018cd244465e" })
ON CREATE
SET klient = {
    "id": "87798b47-ab1b-49b7-9c5e-018cd244465e"
}