为gremlServer创建对象,connectionPoolSettings
var gremlinClient = new GremlinClient(gremlinServer,connectionPoolSettings:connectionPoolSettings);
using (gremlinClient)
{
var v1 = graph.AddV("person").Property("name", "marko").Next();**
var v2 = graph.AddV("person").Property("name", "stephen").Next();
graph.V(v1).AddE("knows").To(v2).Property("weight", 0.75).Iterate();
}
在变量V1低于异常时:
Gremlin.Net.Driver.Exceptions.ConnectionClosedException: 'Connection closed by server. CloseStatus: InternalServerError, CloseDescription: Internal-Server-Error. Any in-progress requests on the connection will be in an unknown state, and may need to be retried.
我无法理解服务器为什么关闭连接
第一次调用Next()
之后,v1
对象现在是一个结果。graph
是实际的GraphTraversalSource,还是您从中派生的东西?如果是后者,则在调用Next
之后,它已经完成,您将不得不再次创建它。
通常,最好让填充v1和v2的前两个调用返回它们的ID。更好的做法是,将所有操作作为一个查询。我将在下面展示两者的示例。
var v1 = graph.AddV("person").Property("name", "marko").Id().Next();
var v2 = graph.AddV("person").Property("name", "stephen")).Id().Next();
graph.V(v1).AddE("knows").To(V(v2)).Property("weight", 0.75).Iterate();
}
或者,清洁剂,
graph.AddV("person").Property("name", "marko").As("a").
AddV("person").Property("name", "stephen")).
AddE("knows").From("a").Property("weight", 0.75).
Iterate();
}
我还假设graph
是GraphTraversalSource
对象(通常称为g
,而不是从g
派生的东西的实际Graph
对象
由于您使用Cosmos DB标记了这个问题,我认为您使用的是该后端。不幸的是,它不支持任何Gremlin。Net版本比3.4.13更新,但您在评论中提到您正在使用Gremlin。Net 3.6.1,目前无法与Cosmos DB一起使用。
除了版本之外,Cosmos DB也不支持Gremlin Bytecode,当你在C#中创建遍历并迭代它们时,它会在内部使用。使用Cosmos DB,您必须将它们作为字符串发送,就像发送SQL查询字符串一样。
因此,与其这样(我从kelvin lawrence的响应中获取代码,因为它使用了一次遍历(:
graph.AddV("person").Property("name", "marko").As("a").
AddV("person").Property("name", "stephen")).
AddE("knows").From("a").Property("weight", 0.75).
Iterate();
你必须这样做:
var query = "g.addV('person').property('name', 'marko').as('a').
addV('person').property('name', 'stephen')).
addE('knows').from('a').property('weight', 0.75).
iterate()";
await gremlinClient.SubmitAsync<object>(query);
一般来说,请查看官方的Cosmos DB文档或Cosmos DB和Gremlin的示例存储库。网
我在更新Gremlin-Nuget包后出现此错误。在添加到这个快速入门问题后,我发现兼容性图表表明支持3.4.13版本。3.4.13于2022年1月13日发布。在我把Nuget放回3.4.13之后,连接异常就消失了。
这让我想知道为什么微软没有更新以支持更新的版本。我写这篇文章的时候已经13个月了。