C# neo4j -MERGE模式中不能使用参数Map(请改用文本Map

xriantvc  于 2022-11-26  发布在  C#
关注(0)|答案(1)|浏览(168)

我想创建节点之间的关系,参数作为对象,如-

await _graphClient.ConnectAsync();
               await _graphClient.Cypher
               .Match("(obj1:Client)")
               .Where((Client obj1) => obj1.ClientId == UserId)
               .Match("(obj2:Job)")
               .Where((Job obj2) => obj2.Id == JobId) 
               .Merge("(obj1)-[r:JOB_POSTED $relationobj1]->(obj2)")
               .WithParam("relationobj1", relationobj1)
               .ExecuteWithoutResultsAsync();

以上代码给出错误-
{“参数Map不能在MERGE模式中使用(请改用文字Map,例如“{id:{param}.id}”)(第5行,第29列(偏移量:130))\n“合并(对象1)-[r:作业过帐$relationobj1]-〉(对象2)"\n
如果我从关系参数中删除$relationobj1,它将工作。
对象关系obj 1的生成如下所示-

JOBS_POSTED relationobj1 = new JOBS_POSTED();
relationobj1.createddate = DateTime.UtcNow;

知道什么是将参数作为对象传递的正确方法吗?
先谢谢你

w1jd8yoj

w1jd8yoj1#

尝试使用set代替。性能方面-没有区别。

await _graphClient.ConnectAsync();
await _graphClient.Cypher
    .Match("(obj1:Client)")
    .Where((Client obj1) => obj1.ClientId == UserId)
    .Match("(obj2:Job)")
    .Where((Job obj2) => obj2.Id == JobId) 
    .Merge("(obj1)-[r:JOB_POSTED]->(obj2)")
    .Set("r = $relationobj1") //HERE
    .WithParam("relationobj1", relationobj1)
    .ExecuteWithoutResultsAsync();

相关问题