Class Session
A session holds connections to a Cassandra cluster, allowing it to be queried.
Each session maintains multiple connections to the cluster nodes, provides policies to choose which node to use for each query (round-robin on all nodes of the cluster by default), and handles retries for failed query (when it makes sense), etc...
Session instances are thread-safe and usually a single instance is enough per application. However, a given session can only be set to one keyspace at a time, so one instance per keyspace is necessary.
Inherited Members
Namespace: Cassandra
Assembly: Cassandra.dll
Syntax
public class Session : ISession, IDisposable
Properties
BinaryProtocolVersion
Gets the Cassandra native binary protocol version
Declaration
public int BinaryProtocolVersion { get; }
Property Value
| Type | Description |
|---|---|
| int |
Cluster
Gets the cluster information and state
Declaration
public ICluster Cluster { get; }
Property Value
| Type | Description |
|---|---|
| ICluster |
Configuration
Gets the cluster configuration
Declaration
public Configuration Configuration { get; protected set; }
Property Value
| Type | Description |
|---|---|
| Configuration |
IsDisposed
Determines if the session is already disposed
Declaration
public bool IsDisposed { get; }
Property Value
| Type | Description |
|---|---|
| bool |
Keyspace
Gets or sets the keyspace
Declaration
public string Keyspace { get; }
Property Value
| Type | Description |
|---|---|
| string |
Policies
Declaration
public Policies Policies { get; }
Property Value
| Type | Description |
|---|---|
| Policies |
SessionName
Session name. This will be autogenerated if it is not set with WithSessionName(string). This is used as part of the metric bucket name, for example, which can be used to separate metric paths per session.
Declaration
public string SessionName { get; }
Property Value
| Type | Description |
|---|---|
| string |
UserDefinedTypes
Gets the user defined type mappings
Declaration
public UdtMappingDefinitions UserDefinedTypes { get; }
Property Value
| Type | Description |
|---|---|
| UdtMappingDefinitions |
Methods
BeginExecute(IStatement, AsyncCallback, object)
Begins asynchronous execute operation.
Declaration
public IAsyncResult BeginExecute(IStatement statement, AsyncCallback callback, object state)
Parameters
| Type | Name | Description |
|---|---|---|
| IStatement | statement | |
| AsyncCallback | callback | |
| object | state |
Returns
| Type | Description |
|---|---|
| IAsyncResult |
BeginExecute(string, ConsistencyLevel, AsyncCallback, object)
Begins asynchronous execute operation
Declaration
public IAsyncResult BeginExecute(string cqlQuery, ConsistencyLevel consistency, AsyncCallback callback, object state)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | |
| ConsistencyLevel | consistency | |
| AsyncCallback | callback | |
| object | state |
Returns
| Type | Description |
|---|---|
| IAsyncResult |
BeginPrepare(string, AsyncCallback, object)
Begins asynchronous prepare operation
Declaration
public IAsyncResult BeginPrepare(string cqlQuery, AsyncCallback callback, object state)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | |
| AsyncCallback | callback | |
| object | state |
Returns
| Type | Description |
|---|---|
| IAsyncResult |
ChangeKeyspace(string)
Switches to the specified keyspace.
Declaration
public void ChangeKeyspace(string keyspace)
Parameters
| Type | Name | Description |
|---|---|---|
| string | keyspace |
Exceptions
| Type | Condition |
|---|---|
| InvalidQueryException | When keyspace does not exist |
CreateKeyspace(string, Dictionary<string, string>, bool)
Creates new keyspace in current cluster.
Declaration
public void CreateKeyspace(string keyspace, Dictionary<string, string> replication = null, bool durableWrites = true)
Parameters
| Type | Name | Description |
|---|---|---|
| string | keyspace | |
| Dictionary<string, string> | replication | Replication property for this keyspace. To set it, refer to the ReplicationStrategies class methods. It is a dictionary of replication property sub-options where key is a sub-option name and value is a value for that sub-option. Default value is |
| bool | durableWrites | Whether to use the commit log for updates on this keyspace. Default is set to |
CreateKeyspaceIfNotExists(string, Dictionary<string, string>, bool)
Creates new keyspace in current cluster. If keyspace with specified name already exists, then this method does nothing.
Declaration
public void CreateKeyspaceIfNotExists(string keyspaceName, Dictionary<string, string> replication = null, bool durableWrites = true)
Parameters
| Type | Name | Description |
|---|---|---|
| string | keyspaceName | Case-sensitive name of keyspace to be created. |
| Dictionary<string, string> | replication | Replication property for this keyspace. To set it, refer to the ReplicationStrategies class methods. It is a dictionary of replication property sub-options where key is a sub-option name and value is a value for that sub-option. Default value is |
| bool | durableWrites | Whether to use the commit log for updates on this keyspace. Default is set to |
DeleteKeyspace(string)
Deletes specified keyspace from current cluster. If keyspace with specified name does not exist, then exception will be thrown.
Declaration
public void DeleteKeyspace(string keyspaceName)
Parameters
| Type | Name | Description |
|---|---|---|
| string | keyspaceName | Name of keyspace to be deleted. |
DeleteKeyspaceIfExists(string)
Deletes specified keyspace from current cluster. If keyspace with specified name does not exist, then this method does nothing.
Declaration
public void DeleteKeyspaceIfExists(string keyspaceName)
Parameters
| Type | Name | Description |
|---|---|---|
| string | keyspaceName | Name of keyspace to be deleted. |
Dispose()
Declaration
public void Dispose()
EndExecute(IAsyncResult)
Ends asynchronous execute operation
Declaration
public RowSet EndExecute(IAsyncResult ar)
Parameters
| Type | Name | Description |
|---|---|---|
| IAsyncResult | ar |
Returns
| Type | Description |
|---|---|
| RowSet |
EndPrepare(IAsyncResult)
Ends asynchronous prepare operation
Declaration
public PreparedStatement EndPrepare(IAsyncResult ar)
Parameters
| Type | Name | Description |
|---|---|---|
| IAsyncResult | ar |
Returns
| Type | Description |
|---|---|
| PreparedStatement |
Execute(IStatement)
Executes the provided query.
Declaration
public RowSet Execute(IStatement statement)
Parameters
| Type | Name | Description |
|---|---|---|
| IStatement | statement |
Returns
| Type | Description |
|---|---|
| RowSet |
Execute(IStatement, string)
Executes the provided statement with the provided execution profile. The execution profile must have been added previously to the Cluster using WithExecutionProfiles(Action<IExecutionProfileOptions>).
Declaration
public RowSet Execute(IStatement statement, string executionProfileName)
Parameters
| Type | Name | Description |
|---|---|---|
| IStatement | statement | Statement to execute. |
| string | executionProfileName | ExecutionProfile name to be used while executing the statement. |
Returns
| Type | Description |
|---|---|
| RowSet |
Execute(string)
Executes the provided query.
Declaration
public RowSet Execute(string cqlQuery)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery |
Returns
| Type | Description |
|---|---|
| RowSet |
Execute(string, ConsistencyLevel)
Executes the provided query.
Declaration
public RowSet Execute(string cqlQuery, ConsistencyLevel consistency)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | |
| ConsistencyLevel | consistency |
Returns
| Type | Description |
|---|---|
| RowSet |
Execute(string, int)
Executes the provided query.
Declaration
public RowSet Execute(string cqlQuery, int pageSize)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | |
| int | pageSize |
Returns
| Type | Description |
|---|---|
| RowSet |
Execute(string, string)
Executes the provided query with the provided execution profile. The execution profile must have been added previously to the Cluster using WithExecutionProfiles(Action<IExecutionProfileOptions>).
Declaration
public RowSet Execute(string cqlQuery, string executionProfileName)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | Query to execute. |
| string | executionProfileName | ExecutionProfile name to be used while executing the statement. |
Returns
| Type | Description |
|---|---|
| RowSet |
ExecuteAsync(IStatement)
Executes a query asynchronously
Declaration
public Task<RowSet> ExecuteAsync(IStatement statement)
Parameters
| Type | Name | Description |
|---|---|---|
| IStatement | statement | The statement to execute (simple, bound or batch statement) |
Returns
| Type | Description |
|---|---|
| Task<RowSet> | A task representing the asynchronous operation. |
ExecuteAsync(IStatement, string)
Executes a query asynchronously with the provided execution profile. The execution profile must have been added previously to the Cluster using WithExecutionProfiles(Action<IExecutionProfileOptions>).
Declaration
public Task<RowSet> ExecuteAsync(IStatement statement, string executionProfileName)
Parameters
| Type | Name | Description |
|---|---|---|
| IStatement | statement | The statement to execute (simple, bound or batch statement) |
| string | executionProfileName | ExecutionProfile name to be used while executing the statement. |
Returns
| Type | Description |
|---|---|
| Task<RowSet> | A task representing the asynchronous operation. |
ExecuteGraph(IGraphStatement)
Executes a graph statement.
Declaration
public GraphResultSet ExecuteGraph(IGraphStatement statement)
Parameters
| Type | Name | Description |
|---|---|---|
| IGraphStatement | statement | The graph statement containing the query |
Returns
| Type | Description |
|---|---|
| GraphResultSet |
Examples
GraphResultSet rs = session.ExecuteGraph(new SimpleGraphStatement("g.V()"));
ExecuteGraph(IGraphStatement, string)
Executes a graph statement with the provided execution profile. The execution profile must have been added previously to the Cluster using WithExecutionProfiles(Action<IExecutionProfileOptions>).
Declaration
public GraphResultSet ExecuteGraph(IGraphStatement statement, string executionProfileName)
Parameters
| Type | Name | Description |
|---|---|---|
| IGraphStatement | statement | The graph statement containing the query |
| string | executionProfileName | The graph execution profile name to use while executing this statement. |
Returns
| Type | Description |
|---|---|
| GraphResultSet |
Examples
GraphResultSet rs = session.ExecuteGraph(new SimpleGraphStatement("g.V()"), "graphProfile");
ExecuteGraphAsync(IGraphStatement)
Executes a graph statement.
Declaration
public Task<GraphResultSet> ExecuteGraphAsync(IGraphStatement graphStatement)
Parameters
| Type | Name | Description |
|---|---|---|
| IGraphStatement | graphStatement |
Returns
| Type | Description |
|---|---|
| Task<GraphResultSet> |
Examples
Task<GraphResultSet$gt; task = session.ExecuteGraphAsync(new SimpleGraphStatement("g.V()"));
ExecuteGraphAsync(IGraphStatement, string)
Executes a graph statement asynchronously with the provided graph execution profile. The graph execution profile must have been added previously to the Cluster using WithExecutionProfiles(Action<IExecutionProfileOptions>).
Declaration
public Task<GraphResultSet> ExecuteGraphAsync(IGraphStatement graphStatement, string executionProfileName)
Parameters
| Type | Name | Description |
|---|---|---|
| IGraphStatement | graphStatement | |
| string | executionProfileName | The graph execution profile name to use while executing this statement. |
Returns
| Type | Description |
|---|---|
| Task<GraphResultSet> |
Examples
Task<GraphResultSet$gt; task = session.ExecuteGraphAsync(new SimpleGraphStatement("g.V()"), "graphProfile");
GetMetrics()
Retrieves the driver metrics for this session.
Declaration
public IDriverMetrics GetMetrics()
Returns
| Type | Description |
|---|---|
| IDriverMetrics |
Prepare(string)
Prepares the provided query string.
Declaration
public PreparedStatement Prepare(string cqlQuery)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | cql query to prepare |
Returns
| Type | Description |
|---|---|
| PreparedStatement |
Prepare(string, IDictionary<string, byte[]>)
Prepares the query string, sending the custom payload request.
Declaration
public PreparedStatement Prepare(string cqlQuery, IDictionary<string, byte[]> customPayload)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | cql query to prepare |
| IDictionary<string, byte[]> | customPayload | Custom outgoing payload to send with the prepare request |
Returns
| Type | Description |
|---|---|
| PreparedStatement |
Prepare(string, string)
Prepares the query on the provided keyspace.
Declaration
public PreparedStatement Prepare(string cqlQuery, string keyspace)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | Cql query to prepare |
| string | keyspace | The keyspace to prepare this query with |
Returns
| Type | Description |
|---|---|
| PreparedStatement |
Remarks
Setting the keyspace parameter is only available with protocol v5 (not supported by the driver yet) or DSE 6.0+.
Prepare(string, string, IDictionary<string, byte[]>)
Prepares the provided query string asynchronously on the provided keyspace, sending the custom payload as part of the request.
Declaration
public PreparedStatement Prepare(string cqlQuery, string keyspace, IDictionary<string, byte[]> customPayload)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | Cql query to prepare |
| string | keyspace | The keyspace to prepare this query with |
| IDictionary<string, byte[]> | customPayload | Custom outgoing payload to send with the prepare request |
Returns
| Type | Description |
|---|---|
| PreparedStatement |
Remarks
Setting the keyspace parameter is only available with protocol v5 (not supported by the driver yet) or DSE 6.0+.
PrepareAsync(string)
Prepares the provided query string asynchronously.
Declaration
public Task<PreparedStatement> PrepareAsync(string query)
Parameters
| Type | Name | Description |
|---|---|---|
| string | query |
Returns
| Type | Description |
|---|---|
| Task<PreparedStatement> |
PrepareAsync(string, IDictionary<string, byte[]>)
Prepares the provided query string asynchronously, and sending the custom payload request.
Declaration
public Task<PreparedStatement> PrepareAsync(string query, IDictionary<string, byte[]> customPayload)
Parameters
| Type | Name | Description |
|---|---|---|
| string | query | |
| IDictionary<string, byte[]> | customPayload | Custom outgoing payload to send with the prepare request |
Returns
| Type | Description |
|---|---|
| Task<PreparedStatement> |
PrepareAsync(string, string)
Prepares the query asynchronously on the provided keyspace.
Declaration
public Task<PreparedStatement> PrepareAsync(string cqlQuery, string keyspace)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | Cql query to prepare |
| string | keyspace | The keyspace to prepare this query with |
Returns
| Type | Description |
|---|---|
| Task<PreparedStatement> |
Remarks
Setting the keyspace parameter is only available with protocol v5 (not supported by the driver yet) or DSE 6.0+.
PrepareAsync(string, string, IDictionary<string, byte[]>)
Prepares the provided query asynchronously on the provided keyspace, sending the custom payload as part of the request.
Declaration
public Task<PreparedStatement> PrepareAsync(string cqlQuery, string keyspace, IDictionary<string, byte[]> customPayload)
Parameters
| Type | Name | Description |
|---|---|---|
| string | cqlQuery | Cql query to prepare |
| string | keyspace | The keyspace to prepare this query with |
| IDictionary<string, byte[]> | customPayload | Custom outgoing payload to send with the prepare request |
Returns
| Type | Description |
|---|---|
| Task<PreparedStatement> |
Remarks
Setting the keyspace parameter is only available with protocol v5 (not supported by the driver yet) or DSE 6.0+.
ShutdownAsync()
Disposes the session asynchronously.
Declaration
public Task ShutdownAsync()
Returns
| Type | Description |
|---|---|
| Task |
WaitForSchemaAgreement(RowSet)
Declaration
public void WaitForSchemaAgreement(RowSet rs)
Parameters
| Type | Name | Description |
|---|---|---|
| RowSet | rs |
WaitForSchemaAgreement(IPEndPoint)
Declaration
public bool WaitForSchemaAgreement(IPEndPoint hostAddress)
Parameters
| Type | Name | Description |
|---|---|---|
| IPEndPoint | hostAddress |
Returns
| Type | Description |
|---|---|
| bool |