/// <summary> /// Constructs an instance of <see cref="DatastoreClientImpl"/> with the given arguments. /// Clients using the <see cref="DatastoreDb"/> abstraction layer would normally call /// <see cref="DatastoreDb.BeginTransaction(CallSettings)"/> or <see cref="DatastoreDb.BeginTransactionAsync(CallSettings)"/> /// instead of calling this method directly. /// </summary> /// <param name="client">The client to use for Datastore operations. Must not be null.</param> /// <param name="projectId">The ID of the project of the Datastore operations. Must not be null.</param> /// <param name="namespaceId">The ID of the namespace which is combined with <paramref name="projectId"/> to form a partition ID /// to use in query operations. May be null.</param> /// <param name="transactionId">The transaction obtained by an earlier <see cref="DatastoreClient.BeginTransaction(string, CallSettings)"/> /// or the asynchronous equivalent. Must not be null</param> /// <returns>A <see cref="DatastoreTransaction"/> representation of the specified transaction.</returns> public static DatastoreTransaction Create(DatastoreClient client, string projectId, string namespaceId, ByteString transactionId) => new DatastoreTransactionImpl(client, projectId, namespaceId, transactionId);