示例#1
0
        public void TestUpdateVertex()
        {
            using (TestDatabaseContext testContext = new TestDatabaseContext())
            {
                ORID orid;
                using (ODatabase database = new ODatabase(TestConnection.ConnectionOptions))
                {
                    // prerequisites
                    database
                    .Create.Class("TestVertexClass")
                    .Extends <OVertex>()
                    .Run();

                    OVertex testVertex = new OVertex();
                    testVertex.OClassName = "TestVertexClass";
                    testVertex.SetField("foo", "foo string value");
                    testVertex.SetField("bar", 12345);

                    Assert.AreEqual(null, testVertex.ORID);

                    database.Transaction.Add(testVertex);

                    Assert.IsNotNull(testVertex.ORID);
                    Assert.IsTrue(testVertex.ORID.ClusterPosition < 0);
                    Assert.AreEqual(-2, testVertex.ORID.ClusterPosition);

                    database.Transaction.Commit();
                    orid = testVertex.ORID;
                }

                using (ODatabase database = new ODatabase(TestConnection.ConnectionOptions))
                {
                    OVertex v = database.Load.ORID(orid).Run().To <OVertex>();
                    v.SetField("foobar", "blah");
                    database.Transaction.Update(v);

                    database.Transaction.Commit();
                }

                using (ODatabase database = new ODatabase(TestConnection.ConnectionOptions))
                {
                    OVertex v = database.Load.ORID(orid).Run().To <OVertex>();
                    Assert.AreEqual("blah", v.GetField <string>("foobar"));
                }
            }
        }
示例#2
0
        public void ShouldCreateVerticesWithEdge()
        {
            using (TestDatabaseContext testContext = new TestDatabaseContext())
            {
                using (ODatabase database = new ODatabase(TestConnection.GlobalTestDatabaseAlias))
                {
                    OVertex vertex1 = database
                                      .Create.Vertex <OVertex>()
                                      .Set("Foo", "foo string value1")
                                      .Set("Bar", 12345)
                                      .Run <OVertex>();

                    Assert.True(!string.IsNullOrEmpty(vertex1.ORID.ToString()));
                    Assert.Equal("V", vertex1.OClassName);
                    Assert.Equal("foo string value1", vertex1.GetField <string>("Foo"));
                    Assert.Equal(12345, vertex1.GetField <int>("Bar"));

                    OVertex vertex2 = database
                                      .Create.Vertex <OVertex>()
                                      .Set("Foo", "foo string value2")
                                      .Set("Bar", 54321)
                                      .Run <OVertex>();

                    Assert.True(!string.IsNullOrEmpty(vertex2.ORID.ToString()));
                    Assert.Equal("V", vertex2.OClassName);
                    Assert.Equal("foo string value2", vertex2.GetField <string>("Foo"));
                    Assert.Equal(54321, vertex2.GetField <int>("Bar"));

                    OVertex vertex3 = database
                                      .Create.Vertex <OVertex>()
                                      .Set("Foo", "foo string value3")
                                      .Set("Bar", 347899)
                                      .Run <OVertex>();

                    Assert.True(!string.IsNullOrEmpty(vertex3.ORID.ToString()));
                    Assert.Equal("V", vertex3.OClassName);
                    Assert.Equal("foo string value3", vertex3.GetField <string>("Foo"));
                    Assert.Equal(347899, vertex3.GetField <int>("Bar"));

                    OEdge edge1 = database
                                  .Create.Edge <OEdge>()
                                  .From(vertex1)
                                  .To(vertex2)
                                  .Set("Foo", "foo string value3")
                                  .Set("Bar", 123)
                                  .Run <OEdge>();

                    Assert.True(!string.IsNullOrEmpty(edge1.ORID.ToString()));
                    Assert.Equal("E", edge1.Label);
                    Assert.Equal("E", edge1.OClassName);
                    Assert.Equal(vertex2.ORID, edge1.InV);
                    Assert.Equal(vertex1.ORID, edge1.OutV);
                    Assert.Equal("foo string value3", edge1.GetField <string>("Foo"));
                    Assert.Equal(123, edge1.GetField <int>("Bar"));

                    OEdge edge2 = database
                                  .Create.Edge <OEdge>()
                                  .From(vertex1)
                                  .To(vertex3)
                                  .Set("Foo", "foo string value4")
                                  .Set("Bar", 245)
                                  .Run <OEdge>();

                    Assert.True(!string.IsNullOrEmpty(edge2.ORID.ToString()));
                    Assert.Equal("E", edge2.Label);
                    Assert.Equal("E", edge2.OClassName);
                    Assert.Equal(vertex3.ORID, edge2.InV);
                    Assert.Equal(vertex1.ORID, edge2.OutV);
                    Assert.Equal("foo string value4", edge2.GetField <string>("Foo"));
                    Assert.Equal(245, edge2.GetField <int>("Bar"));

                    OVertex loadedVertex1 = database
                                            .Select()
                                            .From(vertex1)
                                            .ToList <OVertex>().First();

                    Assert.True(!string.IsNullOrEmpty(loadedVertex1.ORID.ToString()));
                    Assert.Equal("V", loadedVertex1.OClassName);
                    Assert.Equal(0, loadedVertex1.InE.Count);
                    Assert.Equal(2, loadedVertex1.OutE.Count);
                    Assert.True(loadedVertex1.OutE.Contains(edge1.ORID));
                    Assert.True(loadedVertex1.OutE.Contains(edge2.ORID));
                    Assert.Equal(vertex1.GetField <string>("Foo"), loadedVertex1.GetField <string>("Foo"));
                    Assert.Equal(vertex1.GetField <int>("Bar"), loadedVertex1.GetField <int>("Bar"));

                    OVertex loadedVertex2 = database
                                            .Select()
                                            .From(vertex2)
                                            .ToList <OVertex>().First();

                    Assert.True(!string.IsNullOrEmpty(loadedVertex2.ORID.ToString()));
                    Assert.Equal("V", loadedVertex2.OClassName);
                    Assert.Equal(0, loadedVertex2.OutE.Count);
                    Assert.Equal(1, loadedVertex2.InE.Count);
                    Assert.True(loadedVertex2.InE.Contains(edge1.ORID));
                    Assert.Equal(vertex2.GetField <string>("Foo"), loadedVertex2.GetField <string>("Foo"));
                    Assert.Equal(vertex2.GetField <int>("Bar"), loadedVertex2.GetField <int>("Bar"));
                }
            }
        }
示例#3
0
 static void Main(string[] args)
 {
     _server = new OServer(_hostname, _port, _rootUserName, _rootUserPassword);
     if (!_server.DatabaseExist(_DBname, OStorageType.PLocal))
     {
         _server.CreateDatabase(_DBname, ODatabaseType.Graph, OStorageType.PLocal);
         Console.WriteLine("Database " + _DBname + " created");
         //Connect to the DB
         OClient.CreateDatabasePool(
             _hostname,
             _port,
             _DBname,
             ODatabaseType.Graph,
             _username,
             _password,
             10,
             _aliasDB
             );
         Console.WriteLine("Connected to the DB " + _DBname);
         using (ODatabase database = new ODatabase(_aliasDB))
         {
             //Classes and properties creation
             database
             .Create
             .Class("Users")
             .Extends <OVertex>()
             .Run();
             database
             .Create
             .Property("userID", OType.Integer)
             .Class("users")
             .Run();
             //Populate the DB
             OVertex vertexUser = new OVertex();
             vertexUser.OClassName = "Users";
             vertexUser
             .SetField("userID", 1);
             OVertex createVertexUser = database
                                        .Create.Vertex(vertexUser)
                                        .Run();
             Console.WriteLine("Created vertex " + createVertexUser.OClassName + " with @rid " + createVertexUser.ORID + " and userID " + createVertexUser.GetField <int>("userID"));
         }
     }
     else
     {
         //Connection
         OClient.CreateDatabasePool(
             _hostname,
             _port,
             _DBname,
             ODatabaseType.Graph,
             _username,
             _password,
             10,
             _aliasDB
             );
         Console.WriteLine("Connected to the DB " + _DBname);
         using (ODatabase database = new ODatabase(_aliasDB))
         {
             database
             .Update()
             .Class("Users")
             .Set("userID", 2)
             .Upsert()
             .Where("userID")
             .Equals(2)
             .Run();
             Console.WriteLine("Operation executed");
         }
     }
 }
        public void ShouldCreateVerticesWithEdge()
        {
            using (TestDatabaseContext testContext = new TestDatabaseContext())
            {
                using (ODatabase database = new ODatabase(TestConnection.GLOBAL_TEST_DATABASE_ALIAS))
                {
                    OVertex vertex1 = database
                                      .Create.Vertex <OVertex>()
                                      .Set("Foo", "foo string value1")
                                      .Set("Bar", 12345)
                                      .Run <OVertex>();

                    Assert.IsTrue(!string.IsNullOrEmpty(vertex1.ORID.ToString()));
                    Assert.AreEqual(vertex1.OClassName, "V");
                    Assert.AreEqual(vertex1.GetField <string>("Foo"), "foo string value1");
                    Assert.AreEqual(vertex1.GetField <int>("Bar"), 12345);

                    OVertex vertex2 = database
                                      .Create.Vertex <OVertex>()
                                      .Set("Foo", "foo string value2")
                                      .Set("Bar", 54321)
                                      .Run <OVertex>();

                    Assert.IsTrue(!string.IsNullOrEmpty(vertex2.ORID.ToString()));
                    Assert.AreEqual(vertex2.OClassName, "V");
                    Assert.AreEqual(vertex2.GetField <string>("Foo"), "foo string value2");
                    Assert.AreEqual(vertex2.GetField <int>("Bar"), 54321);

                    OVertex vertex3 = database
                                      .Create.Vertex <OVertex>()
                                      .Set("Foo", "foo string value3")
                                      .Set("Bar", 347899)
                                      .Run <OVertex>();

                    Assert.IsTrue(!string.IsNullOrEmpty(vertex3.ORID.ToString()));
                    Assert.AreEqual(vertex3.OClassName, "V");
                    Assert.AreEqual(vertex3.GetField <string>("Foo"), "foo string value3");
                    Assert.AreEqual(vertex3.GetField <int>("Bar"), 347899);

                    OEdge edge1 = database
                                  .Create.Edge <OEdge>()
                                  .From(vertex1)
                                  .To(vertex2)
                                  .Set("Foo", "foo string value3")
                                  .Set("Bar", 123)
                                  .Run <OEdge>();

                    Assert.IsTrue(!string.IsNullOrEmpty(edge1.ORID.ToString()));
                    Assert.AreEqual(edge1.Label, "E");
                    Assert.AreEqual(edge1.OClassName, "E");
                    Assert.AreEqual(edge1.InV, vertex2.ORID);
                    Assert.AreEqual(edge1.OutV, vertex1.ORID);
                    Assert.AreEqual(edge1.GetField <string>("Foo"), "foo string value3");
                    Assert.AreEqual(edge1.GetField <int>("Bar"), 123);

                    OEdge edge2 = database
                                  .Create.Edge <OEdge>()
                                  .From(vertex1)
                                  .To(vertex3)
                                  .Set("Foo", "foo string value4")
                                  .Set("Bar", 245)
                                  .Run <OEdge>();

                    Assert.IsTrue(!string.IsNullOrEmpty(edge2.ORID.ToString()));
                    Assert.AreEqual(edge2.Label, "E");
                    Assert.AreEqual(edge2.OClassName, "E");
                    Assert.AreEqual(edge2.InV, vertex3.ORID);
                    Assert.AreEqual(edge2.OutV, vertex1.ORID);
                    Assert.AreEqual(edge2.GetField <string>("Foo"), "foo string value4");
                    Assert.AreEqual(edge2.GetField <int>("Bar"), 245);

                    OVertex loadedVertex1 = database
                                            .Select()
                                            .From(vertex1)
                                            .ToList <OVertex>().First();

                    Assert.IsTrue(!string.IsNullOrEmpty(loadedVertex1.ORID.ToString()));
                    Assert.AreEqual(loadedVertex1.OClassName, "V");
                    Assert.AreEqual(loadedVertex1.InE.Count, 0);
                    Assert.AreEqual(loadedVertex1.OutE.Count, 2);
                    Assert.IsTrue(loadedVertex1.OutE.Contains(edge1.ORID));
                    Assert.IsTrue(loadedVertex1.OutE.Contains(edge2.ORID));
                    Assert.AreEqual(loadedVertex1.GetField <string>("Foo"), vertex1.GetField <string>("Foo"));
                    Assert.AreEqual(loadedVertex1.GetField <int>("Bar"), vertex1.GetField <int>("Bar"));

                    OVertex loadedVertex2 = database
                                            .Select()
                                            .From(vertex2)
                                            .ToList <OVertex>().First();

                    Assert.IsTrue(!string.IsNullOrEmpty(loadedVertex2.ORID.ToString()));
                    Assert.AreEqual(loadedVertex2.OClassName, "V");
                    Assert.AreEqual(loadedVertex2.OutE.Count, 0);
                    Assert.AreEqual(loadedVertex2.InE.Count, 1);
                    Assert.IsTrue(loadedVertex2.InE.Contains(edge1.ORID));
                    Assert.AreEqual(loadedVertex2.GetField <string>("Foo"), vertex2.GetField <string>("Foo"));
                    Assert.AreEqual(loadedVertex2.GetField <int>("Bar"), vertex2.GetField <int>("Bar"));
                }
            }
        }