Class AdbExecuteScalarWorker<TResult>
A worker that executes a query on an SQL database and returns a single result value in the ScalarResult property.
The query result (which for value types is boxed in an object) is cast to the
TResult
type, and if that fails it is first converted
(with ChangeType(Object, Type)) and then cast.
This handles e.g. the query returning a long
but the worker expecting an
int
.
Also see SQL Database Access.
Implements
Inherited Members
Namespace: actionETL.Adb
Assembly: actionETL.dll
Syntax
public class AdbExecuteScalarWorker<TResult> : WorkerBase<AdbExecuteScalarWorker<TResult>>, IDisposeOnFinished
Type Parameters
Name | Description |
---|---|
TResult | The type of the result value. |
Constructors
AdbExecuteScalarWorker(WorkerParent, String, AdbCommandBuilder)
Initializes a new instance of the AdbExecuteScalarWorker<TResult> worker.
It executes a query on an SQL database and returns a single result value
in the ScalarResult
property.
Declaration
public AdbExecuteScalarWorker(WorkerParent workerParent, string workerName, AdbCommandBuilder commandBuilder)
Parameters
Type | Name | Description |
---|---|---|
WorkerParent | workerParent | The parent worker or worker system that the new child worker will be added to. Cannot be |
String | workerName | Name of the worker.
Set to a prefix plus a trailing
While less useful, set to
The name cannot otherwise contain |
AdbCommandBuilder | commandBuilder | A builder for the database command. Can be |
Exceptions
Type | Condition |
---|---|
ArgumentException |
|
ArgumentNullException |
|
InvalidOperationException |
|
AdbExecuteScalarWorker(WorkerParent, String, IAdbConnectionBuilder, String)
Initializes a new instance of the AdbExecuteScalarWorker<TResult> worker, with CommandType
set to Text
.
It executes a query on an SQL database and returns a single result value
in the ScalarResult
property.
Declaration
public AdbExecuteScalarWorker(WorkerParent workerParent, string workerName, IAdbConnectionBuilder connectionBuilder, string queryText)
Parameters
Type | Name | Description |
---|---|---|
WorkerParent | workerParent | The parent worker or worker system that the new child worker will be added to. Cannot be |
String | workerName | Name of the worker.
Set to a prefix plus a trailing
While less useful, set to
The name cannot otherwise contain |
IAdbConnectionBuilder | connectionBuilder | The connection builder, must not be |
String | queryText | The query text, must not be |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ArgumentException |
|
ArgumentNullException |
|
InvalidOperationException |
|
AdbExecuteScalarWorker(WorkerParent, String, IAdbConnectionBuilder, String, CommandType)
Initializes a new instance of the AdbExecuteScalarWorker<TResult> worker.
It executes a query on an SQL database and returns a single result value
in the ScalarResult
property.
Declaration
public AdbExecuteScalarWorker(WorkerParent workerParent, string workerName, IAdbConnectionBuilder connectionBuilder, string queryText, CommandType commandType)
Parameters
Type | Name | Description |
---|---|---|
WorkerParent | workerParent | The parent worker or worker system that the new child worker will be added to. Cannot be |
String | workerName | Name of the worker.
Set to a prefix plus a trailing
While less useful, set to
The name cannot otherwise contain |
IAdbConnectionBuilder | connectionBuilder | The connection builder, must not be |
String | queryText | The query text, must not be |
CommandType | commandType |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ArgumentException |
|
ArgumentNullException |
|
InvalidOperationException |
|
AdbExecuteScalarWorker(WorkerParent, String, Func<Boolean>, AdbCommandBuilder)
Initializes a new instance of the AdbExecuteScalarWorker<TResult> worker. It executes a query on an SQL database and returns a single result value in the ScalarResult property.
Declaration
public AdbExecuteScalarWorker(WorkerParent workerParent, string workerName, Func<bool> isStartableFunc, AdbCommandBuilder commandBuilder)
Parameters
Type | Name | Description |
---|---|---|
WorkerParent | workerParent | The parent worker or worker system that the new child worker will be added to. Cannot be |
String | workerName | Name of the worker.
Set to a prefix plus a trailing
While less useful, set to
The name cannot otherwise contain |
Func<Boolean> | isStartableFunc | Function to calculate the worker start constraint; it should return |
AdbCommandBuilder | commandBuilder | A builder for the database command. Can be |
Exceptions
Type | Condition |
---|---|
ArgumentException |
|
ArgumentNullException |
|
InvalidOperationException |
|
AdbExecuteScalarWorker(WorkerParent, String, Func<Boolean>, IAdbConnectionBuilder, String)
Initializes a new instance of the AdbExecuteScalarWorker<TResult> worker, with CommandType
set to Text
.
It executes a query on an SQL database and returns a single result value
in the ScalarResult
property.
Declaration
public AdbExecuteScalarWorker(WorkerParent workerParent, string workerName, Func<bool> isStartableFunc, IAdbConnectionBuilder connectionBuilder, string queryText)
Parameters
Type | Name | Description |
---|---|---|
WorkerParent | workerParent | The parent worker or worker system that the new child worker will be added to. Cannot be |
String | workerName | Name of the worker.
Set to a prefix plus a trailing
While less useful, set to
The name cannot otherwise contain |
Func<Boolean> | isStartableFunc | Function to calculate the worker start constraint; it should return |
IAdbConnectionBuilder | connectionBuilder | The connection builder, must not be |
String | queryText | The query text, must not be |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ArgumentException |
|
ArgumentNullException |
|
InvalidOperationException |
|
AdbExecuteScalarWorker(WorkerParent, String, Func<Boolean>, IAdbConnectionBuilder, String, CommandType)
Initializes a new instance of the AdbExecuteScalarWorker<TResult> worker.
It executes a query on an SQL database and returns a single result value
in the ScalarResult
property.
Declaration
public AdbExecuteScalarWorker(WorkerParent workerParent, string workerName, Func<bool> isStartableFunc, IAdbConnectionBuilder connectionBuilder, string queryText, CommandType commandType)
Parameters
Type | Name | Description |
---|---|---|
WorkerParent | workerParent | The parent worker or worker system that the new child worker will be added to. Cannot be |
String | workerName | Name of the worker.
Set to a prefix plus a trailing
While less useful, set to
The name cannot otherwise contain |
Func<Boolean> | isStartableFunc | Function to calculate the worker start constraint; it should return |
IAdbConnectionBuilder | connectionBuilder | The connection builder, must not be |
String | queryText | The query text, must not be |
CommandType | commandType | Type of the command. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException |
|
ArgumentException |
|
ArgumentNullException |
|
InvalidOperationException |
|
Properties
CommandBuilder
Gets or sets the builder for the database command. Can only be set before the worker starts running.
Note: This property is thread-safe.
Declaration
public AdbCommandBuilder CommandBuilder { get; set; }
Property Value
Type | Description |
---|---|
AdbCommandBuilder |
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Cannot set the value after the worker has started running. |
ScalarResult
Gets the result value of the query, taken from the first column of the first row of the result set. It is only available after the worker has completed successfully.
The query result (which for value types is boxed in an object) is cast to the
TResult
type, and if that fails it is first converted
(with ChangeType(Object, Type)) and then cast.
This handles e.g. the query returning a long
but the worker expecting an
int
.
Note that some providers put a size limit on the result value, e.g. for the
Microsoft.Data.SqlClient
provider the limit is 2033 characters.
Note: This property is thread-safe.
Declaration
public TResult ScalarResult { get; }
Property Value
Type | Description |
---|---|
TResult |
Exceptions
Type | Condition |
---|---|
InvalidOperationException |
|
Methods
RunAsync()
This method can be overridden to add custom functionality to the derived worker that runs before
and after the row processing. In this case, the base class base.RunAsync()
must
be called for the worker to function correctly.
Typically, this worker is used without overriding this method.
Declaration
protected override async Task<OutcomeStatus> RunAsync()
Returns
Type | Description |
---|---|
Task<OutcomeStatus> | A |