Добавление новой вершины и ребра к существующей вершине в Datastax CassandraCSharpDriver.Graph, но с ошибкой get edge OUT - PullRequest
1 голос
/ 28 февраля 2020

Я добавляю новую вершину и ребро к существующей вершине в 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 "не было добавлен в «ссылку» »

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?

1 Ответ

2 голосов
/ 28 февраля 2020

Ваш Гремлин здесь:

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() выводится.

Обратите внимание на примеры в Справочной документации , где вы должны увидеть другие методы для этого.

...