c# - 在 Datastax CassandraCSharpDriver.Graph 中向现有顶点添加新顶点和边,但出现边 OUT 错误
问题描述
我正在向 Datastax Graph 中的现有顶点添加一个新顶点和一条边,我想看看如何使用 Datastax CassandraCSharpDriver.Graph 来做到这一点。
工作的 Gremlin 代码如下所示:
Vertex link1 = graph.addVertex(label, "link").property("id", "link-2")
Vertex item1 = g.V().has("item", "id", "item-1").next()
item1.addEdge('contains', link1)
但是在 C# 驱动程序语法中,我希望做这样的事情,但是当我执行它时,错误是“'out'方向上的'contains'的邻接尚未添加到'link'”
GraphTraversalSource g = DseGraph.Traversal(mySession);
var traversal = g.AddV("link").Property("id", "link-1")
.AddE("contains")
.V("item").Has("id", Eq("item-1"));
GraphResultSet result = mySession.ExecuteGraph(traversal);
我创建了这样的边缘和边缘连接:
schema.edgeLabel("contains").multiple().create()
schema.edgeLabel("contains")
.connection("item", "link")
.connection("link", "item")
.add()
如果架构边缘设置不正确或如何在 Datastax CassandraCSharpDriver.Graph 中以最佳方式执行此操作,有什么想法吗?
解决方案
你的小精灵在这里:
g.AddV("link").Property("id", "link-1")
.AddE("contains")
.V("item").Has("id", Eq("item-1")
没有正确形成。它应该是:
g.AddV("link").Property("id", "link-1").As('l1').
V("item").Has("id", Eq("item-1")).
AddE('contains').To('l1')
AddE()
您需要指定和来识别边连接的顶点From()
。To()
如果不指定这些,AddE()
将只使用传入Vertex
的两个值来创建自引用边缘。因此,在这种情况下,您应该只需要根据To()
推断From()
指定 。
请注意参考文档中的示例,您应该在其中看到其他方法来执行此操作。
推荐阅读
- javascript - 使用 fetch 将本地 HTML 页面导入另一个 HTML 页面
- node.js - 在猫鼬查询中插入字符串以使其通用
- php - PHP - 将文本转换为 Unicode
- android - 谷歌地图点击兴趣点在Android和IOS上返回不同的placeId
- excel - VBA - 使用插入的行应用自动填充(基于输入框)并将其应用到其他工作表
- django - 每次我输入提交时,Is_valid 似乎都不是真的
- python-3.x - AssertionError:某些对象具有未恢复的属性
- vue.js - Vue div 文本没有动态更新
- c++ - 在 s-function 中将字符串数组作为参数传递
- google-pagespeed - pagespeed FCP 值:为什么不采用实验室值?