【发布时间】:2021-10-31 23:56:39
【问题描述】:
我想通过以下函数向 janusgraph 添加/更新顶点属性 Gremlin.Net 版本=3.4.6; JanusGraph.Net 版本=0.2.2
public class DataManager
{
private readonly IGremlinClient client;
private readonly GraphTraversalSource g;
public DataManager()
{
this.client = JanusGraphClientBuilder
.BuildClientForServer(new GremlinServer("localhost", 8182))
.Create();
this.g = AnonymousTraversalSource.Traversal().WithRemote(
new DriverRemoteConnection(this.client));
}
public async Task EditVertexProperty(VertexDto vertexDto)
{
var traversal = this.g.V(vertexDto.Id);
if (!string.IsNullOrWhiteSpace(vertexDto.Label))
{
traversal = traversal.HasLabel(vertexDto.Label);
}
if (!traversal.HasNext())
{
throw new Exception("xxxxxxx");
}
foreach (var property in vertexDto.Properties)
{
if (property.IsList)
{
traversal = traversal.Property(Cardinality.List, property.PropertyKey, property.PropertyValue);
}
else
{
traversal = traversal.Property(Cardinality.Single, property.PropertyKey, property.PropertyValue);
}
}
await traversal.Promise(v => v.Iterate()).ConfigureAwait(false);
}
}
public class VertexDto
{
public string Id { get; set; }
public string Label { get; set; }
public List<Property> Properties { get; set; }
}
public class Property
{
public string PropertyKey { get; set; }
public string PropertyValue { get; set; }
public bool IsList { get; set; }
}
当我尝试添加或更新顶点属性时,例如,
{
"id": 1234,
"properties":[
{
"propertyKey": "name",
"propertyValue": "sb"
}
]
}
但没有任何改变,也没有抛出异常。 我尝试在 gremlin-server 中使用 g.V(1234).property("name", "sb").iterate() 它有效。 首先我认为调用 HasNext() 时遍历停止,但似乎并非如此。
我该怎么办。感谢您的帮助。
【问题讨论】:
-
您能否将您的代码清单缩减为仍然显示问题的最小示例?
await g.V(1234).Property("name", "sb").Promise(t => t.Iterate());应该可以工作,然后你只需要像你一样创建GraphTraversalSource g。如果您像这样简化代码,它仍然会失败吗? -
@FlorianHockmann 嗨 Florian Hockmann,正如你所说,
await g.V(1234).Property("name", "sb").Promise(t => t.Iterate());它可以工作,我发现问题是在调用 HasNext() 时引起的。当我删除if (!traversal.HasNext()) {...}或在 if 语句下创建一个新的遍历时,if (!traversal.HasNext()) {...} var newTraversal = this.g.V(vertexDto.Id); ...它起作用了。为什么会这样,我该如何避免呢? -
好的,那我想我知道问题出在哪里了。我将其发布为答案。希望对您有所帮助。
标签: .net-core gremlin janusgraph gremlinnet