OrientDB зависает при создании ребра с включенным useLightweightEdges - PullRequest
0 голосов
/ 31 октября 2018

Я новичок в OrientDb (и в целом в базах данных noSQL) и собрал небольшое приложение для моделирования отношений "друг", используя пакет nuget OrientDB.NETStandard-1.5 .

Край "FriendOf" в идеале является просто связующим звеном между двумя вершинами Person, я прочитал в документации OrientDb , что использование облегченных ребер может повысить производительность. Приведенный ниже код прекрасно работает, когда облегченные края отключены. Однако при включении их висит линия для создания ребра.

Я что-то упустил?

public static void EnableLightweightEdges(ODatabase orient)
{
   orient.Command("ALTER DATABASE custom useLightweightEdges=true");
}

public static void DisableLightweightEdges(ODatabase orient)
{
   orient.Command("ALTER DATABASE custom useLightweightEdges=false");
}

public ODatabase Connect()
{
   return new ODatabase(_connectionOptions);
}

public void EnsureCreated()
{
   using (var orient = Connect())
   {
       DisableLightweightEdges(orient);
       if (!orient.Schema.IsClassExist<Person>())
       {
           orient.Create.Class<Person>().Extends<OVertex>().CreateProperties().Run();
       }

       if (!orient.Schema.IsClassExist("FriendOf"))
       {
           orient.Create.Class("FriendOf").Extends<OEdge>().Run();
       }
       CreatePeople(orient);
   }
}

private static void CreatePeople(ODatabase orient)
{         
   // Clear existing data
   orient.Delete.Edge("FriendOf").Run();
   orient.Delete.Vertex<Person>().Run();

   var person1 = new Person {Id = Guid.Parse("199a5b7a-b4fe-4927-901b-d5b5d2226045"), Name = "Person1"};
   var person1Vertex = orient.Create.Vertex(person1).Run();

   var person2 = new Person {Id = Guid.Parse("5dee19d8-86f0-41a8-b2d8-62a77f80b6d1"), Name = "Person2"};
   var person2Vertex = orient.Create.Vertex(person2).Run();

   orient.Create.Edge("FriendOf").From(person1.ORID).To(person2.ORID).Run();
}
...