Class DatastoreTransactionImpl

public sealed class DatastoreTransactionImpl : DatastoreTransaction, IDisposable

Production implementation of DatastoreTransaction, using a DatastoreClient to implement the operations.

Inheritance

Object > DatastoreTransaction > DatastoreTransactionImpl

Implements

IDisposable

Namespace

Google.Cloud.Datastore.V1

Assembly

Google.Cloud.Datastore.V1.dll

Constructors

DatastoreTransactionImpl(DatastoreClient, String, String, ByteString)

public DatastoreTransactionImpl(DatastoreClient client, string projectId, string namespaceId, ByteString transactionId)

Constructs a DatastoreTransactionImpl from a client, project ID and transaction ID.

Parameters
TypeNameDescription
DatastoreClientclient

The client to use for Datastore operations. Must not be null.

StringprojectId

The ID of the project of the Datastore operations. Must not be null.

StringnamespaceId

The ID of the namespace which is combined with projectId to form a partition ID to use in query operations. May be null.

ByteStringtransactionId

The transaction obtained by an earlier BeginTransaction(String, CallSettings) or the asynchronous equivalent. Must not be null

Remarks

While this can be constructed manually, the expectation is that instances of this class are obtained via BeginTransaction(CallSettings) or BeginTransactionAsync(CallSettings).

Properties

TransactionId

public override ByteString TransactionId { get; }

The ID of the transaction, used implicitly in operations performed with this object.

Property Value
TypeDescription
ByteString
Overrides

Methods

Commit(CallSettings)

public override CommitResponse Commit(CallSettings callSettings = null)

Commits all mutations in this transaction.

Parameter
TypeNameDescription
CallSettingscallSettings
Returns
TypeDescription
CommitResponse

The response from the commit operation. This can be used to determine server-allocated keys.

Overrides Remarks

Any entities with incomplete keys that are assigned keys by this operation will be updated in memory with the server-allocated keys.

Datastore limits the number of entities that can be modified in a Commit operation, and therefore one transaction. When modifying a large number of entities, partition the changes into multiple transactions. See Datastore limits for more details on Datastore limits.

Exceptions
TypeCondition
InvalidOperationException

The transaction has already been committed or rolled back.

CommitAsync(CallSettings)

public override Task<CommitResponse> CommitAsync(CallSettings callSettings = null)

Commits all mutations in this transaction asynchronously.

Parameter
TypeNameDescription
CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
Task<CommitResponse>

The response from the commit operation. This can be used to determine server-allocated keys.

Overrides Remarks

Any entities with incomplete keys that are assigned keys by this operation will be updated in memory with the server-allocated keys.

Datastore limits the number of entities that can be modified in a Commit operation, and therefore one transaction. When modifying a large number of entities, partition the changes into multiple transactions. See Datastore limits for more details on Datastore limits.

Exceptions
TypeCondition
InvalidOperationException

The transaction has already been committed or rolled back.

Delete(IEnumerable<Entity>)

public override void Delete(IEnumerable<Entity> entities)

Adds delete operations for all the specified keys to this transaction.

Parameter
TypeNameDescription
IEnumerable<Entity>entities

The entities to delete. Must not be null.

Overrides

Delete(IEnumerable<Key>)

public override void Delete(IEnumerable<Key> keys)

Adds deletion operations for all the specified keys to this transaction.

Parameter
TypeNameDescription
IEnumerable<Key>keys

The keys to delete. Must not be null.

Overrides

Dispose()

public override void Dispose()

If the transaction has already been committed, this operation is a no-op. Otherwise, it rolls back the transaction.

Overrides

Insert(IEnumerable<Entity>)

public override void Insert(IEnumerable<Entity> entities)

Adds insert operations for all the specified keys to this transaction.

Parameter
TypeNameDescription
IEnumerable<Entity>entities

The entities to insert. Must not be null.

Overrides

Lookup(IEnumerable<Key>, CallSettings)

public override IReadOnlyList<Entity> Lookup(IEnumerable<Key> keys, CallSettings callSettings = null)

Looks up a collection of entities by key.

Parameters
TypeNameDescription
IEnumerable<Key>keys

The keys to look up. Must not be null, and every element must be non-null and refer to a complete key.

CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
IReadOnlyList<Entity>

A collection of entities with the same size as keys, containing corresponding entity references, or null where the key was not found.

Overrides Remarks

This call may perform multiple RPC operations in order to look up all keys.

LookupAsync(IEnumerable<Key>, CallSettings)

public override Task<IReadOnlyList<Entity>> LookupAsync(IEnumerable<Key> keys, CallSettings callSettings = null)

Looks up a collection of entities by key asynchronously.

Parameters
TypeNameDescription
IEnumerable<Key>keys

The keys to look up. Must not be null, and every element must be non-null and refer to a complete key.

CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
Task<IReadOnlyList<Entity>>

A collection of entities with the same size as keys, containing corresponding entity references, or null where the key was not found.

Overrides Remarks

This call may perform multiple RPC operations in order to look up all keys.

Rollback(CallSettings)

public override RollbackResponse Rollback(CallSettings callSettings = null)

Rolls back this transaction.

Parameter
TypeNameDescription
CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
RollbackResponse
Overrides Remarks

This method is rarely useful explicitly; the Dispose() method rolls back the transaction if it is still active, so a using statement is normally preferable to this.

Exceptions
TypeCondition
InvalidOperationException

The transaction has already been committed or rolled back.

RollbackAsync(CallSettings)

public override Task<RollbackResponse> RollbackAsync(CallSettings callSettings = null)

Rolls back this transaction asynchronously.

Parameter
TypeNameDescription
CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
Task<RollbackResponse>
Overrides Remarks

This method is rarely useful explicitly; the Dispose() method rolls back the transaction if it is still active, so a using statement is normally preferable to this.

Exceptions
TypeCondition
InvalidOperationException

The transaction has already been committed or rolled back.

RunQueryLazily(GqlQuery, CallSettings)

public override LazyDatastoreQuery RunQueryLazily(GqlQuery gqlQuery, CallSettings callSettings = null)

Lazily executes the given GQL query in this transaction.

Parameters
TypeNameDescription
GqlQuerygqlQuery

The query to execute. Must not be null.

CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
LazyDatastoreQuery

A LazyDatastoreQuery representing the result of the query.

Overrides Remarks

Using a transaction ensures that a commit operation will fail if any of the entities returned by this query have been modified while the transaction is active. Note that modifications performed as part of this operation are not reflected in the query results.

The results are requested lazily: no API calls will be made until the application starts iterating over the results. Iterating over the same LazyDatastoreQuery object multiple times will execute the query again, potentially returning different results.

RunQueryLazily(Query, CallSettings)

public override LazyDatastoreQuery RunQueryLazily(Query query, CallSettings callSettings = null)

Lazily executes the given structured query in this transaction.

Parameters
TypeNameDescription
Queryquery

The query to execute. Must not be null.

CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
LazyDatastoreQuery

A LazyDatastoreQuery representing the the lazy query results.

Overrides Remarks

Using a transaction ensures that a commit operation will fail if any of the entities returned by this query have been modified while the transaction is active. Note that modifications performed as part of this operation are not reflected in the query results.

The results are requested lazily: no API calls will be made until the application starts iterating over the results. Iterating over the same LazyDatastoreQuery object multiple times will execute the query again, potentially returning different results.

RunQueryLazilyAsync(GqlQuery, CallSettings)

public override AsyncLazyDatastoreQuery RunQueryLazilyAsync(GqlQuery gqlQuery, CallSettings callSettings = null)

Lazily executes the given structured query in this transaction for asynchronous consumption.

Parameters
TypeNameDescription
GqlQuerygqlQuery

The query to execute. Must not be null.

CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
AsyncLazyDatastoreQuery

An AsyncLazyDatastoreQuery representing the result of the query.

Overrides Remarks

Using a transaction ensures that a commit operation will fail if any of the entities returned by this query have been modified while the transaction is active. Note that modifications performed as part of this operation are not reflected in the query results.

The results are requested lazily: no API calls will be made until the application starts iterating over the results. Iterating over the same LazyDatastoreQuery object multiple times will execute the query again, potentially returning different results.

RunQueryLazilyAsync(Query, CallSettings)

public override AsyncLazyDatastoreQuery RunQueryLazilyAsync(Query query, CallSettings callSettings = null)

Lazily executes the given structured query in this transaction for asynchronous consumption.

Parameters
TypeNameDescription
Queryquery

The query to execute. Must not be null.

CallSettingscallSettings

If not null, applies overrides to RPC calls.

Returns
TypeDescription
AsyncLazyDatastoreQuery

An AsyncLazyDatastoreQuery representing the result of the query.

Overrides Remarks

Using a transaction ensures that a commit operation will fail if any of the entities returned by this query have been modified while the transaction is active. Note that modifications performed as part of this operation are not reflected in the query results.

The results are requested lazily: no API calls will be made until the application starts iterating over the results. Iterating over the same LazyDatastoreQuery object multiple times will execute the query again, potentially returning different results.

Update(IEnumerable<Entity>)

public override void Update(IEnumerable<Entity> entities)

Adds update operations for all the specified keys to this transaction.

Parameter
TypeNameDescription
IEnumerable<Entity>entities

The entities to update. Must not be null.

Overrides

Upsert(IEnumerable<Entity>)

public override void Upsert(IEnumerable<Entity> entities)

Adds upsert operations for all the specified keys to this transaction.

Parameter
TypeNameDescription
IEnumerable<Entity>entities

The entities to upsert. Must not be null.

Overrides

Implements