OrientDB-NET - ODatabase

This class provides an interface and methods for when you need to operate on OrientDB databases from within your C#/.NET application.

Use this interface in cases where you need to retrieve or manage clusters, operate on records or issue scripts, queries and commands to the database. If you want to operate on the OrientDB Server as a whole or create or delete databases on the server, use the OServer interface.

Initializing the Database

When you enable the Orient.Client namespace through the using directive, you can create a database interface for your application by instantiating the ODatabase class.


ODatabase(  string host, 
            int port,
            string name,
            ODatabaseType type,
            string user,
            string passwd)

ODatabase(  string host,
            int port,
            string name,
            ODatabaseType type,
            string user,
            string passwd,
            string poolAlias)
  • host Defines the hostname or IP address of the OrientDB Server.
  • port Defines the port to use in connecting to the server.
  • name Defines the database name.
  • type Defines the database type, that is PLocal or Memory.
  • user Defines the user name.
  • passwd Defines the user password.
  • poolAlias Defines the alias to use for the connection pool.


In the interest of abstraction, you might create a method to handle common OrientDB database operations for your application.

using Orient.Client;
using System;

public ODatabase openDatabase(string _host, int _port,
       string _dbName, string _user, string _passwd)

   Console.WriteLine("Opening Database: {0}", _dbname);

   ODatabase database = ODatabase(_host, _port, _dbName, 
       ODatabaseType.Graph, _user, _passwd);

   return database;

Using a Connection Pool

Normally, OrientDB-NET clients operate through a single network connection. When working with web applications or any situation where network bottlenecks are a concern, it is common to pool these connections to ensure better performance.

To use a connection pool pass a pool alias when you create the ODatabase interface.

ODatabase database = ODatabase("localhost", 2424,
   "microblog", ODatabaseType.PLocal, 
   "guestUser", "guest_passwd",

Using Connection Options

In addition to configuring the database interface through arguments passed to the ODatabase class, you can also create a configuration object independent of the class, through the ConnectionOptions class. You may find this useful when you need to initialize several database instances with similar configuration.

The ConnectionOptions class has seven parameters:

HostNamestringDefines the hostname or IP address of the server hosting OrientDB
UserNamestringDefines the name of the database user
PasswordstringDefines the password for database user
PortintDefines the port number for the connection
DatabaseNamestringDefines the name of the database to use
DatabaseTypeODatabaseTypeDefnes the type of database, PLocal or Memory
PoolAliasstringDefines the connection pool to use.

If you initialize this object without defining the connection pool, it sets it to Default.

ConnectionOptions opts = ConnectionOptions();

opts.HostName = "localhost";
opts.UserName = "admin";
opts.Password = "admin_passwd";
opts.Port = 2727;
opts.DatabaseName = "microblog";
opts.DatabaseType = ODatabaseType.PLocal

// Initialize Database
ODatabase database = ODatabase(opts);

Using ODatabase

Once you have instantiated the ODatabase class, you can begin to operate on a particular database from within your C#/.NET application. OrientDB-NET supports a number of database-level operations that you can call through this interface. Additionally, you can issue queries, commands and scripts to the database for those operations that it does not support.

MethodReturn ValueDescription
Close()voidDisposes of the database instance.
Clusters()OClusterQueryCreates clusters.
Command()OCommandResultIssues commands.
CountRecordslongCounts records on database.
Dispose()voidDisposes of the database instance.
GetClusterIdFor()shortRetrieves ID for the given cluster name.
GetClusterNameFor()stringRetrieves the name for the given Cluster ID.
GetClusters()List<OCluster>Retrieves clusters from database.
Gremlin()OCommandResultExecutes Gremlin commands.
Insert()IOInsertPrepares insertion operations.
JavaScript()OCommandQueryPrepares JavaScript commands.
Query()List<ODocument>Queries the database using SQL.
Select()OSqlSelectPrepares queries to execute.
SizelongRetrieves the size of the database.
SqlBatch()OCommandQueryExecutes batch queries.
Update()OSqlUpdatePrepares update statements.

Size Variables

In addition to the various methods, the ODatabase object also supports sizing variables, which you can use to determine the size of the database or the number of records it contains.

  • To retrieve the size of the database, use the Size variable:

    long databaseSize = database.Size;
  • To count the number of records on the database, use the CountRecords variable:

    long numberOfRecords = database.CountRecords;

Closing Databases

When you are finished using the database instance, you can close it to free up system resources. The ODatabase object provides two methods for closing databases: Close() and Dispose(). Given that one is an alias to the other, you can use whichever is more familiar to you.



OrientDB provides support for transactions. The Insert(), Update() and Query() methods all provide support so that you can execute them as part of a transaction rather than on the database outright. For more information, see OTransaction.