Interface IRowMapperCommand
This interface contains commands for mapping columns from a source row to a target row. The source and target can be different from each other, and might be tables, queries etc. in external data sources, or fields and properties in .NET CLR types. It is often used as a worker parameter or property, to allow the user to specify which columns to map or copy. The worker then uses e.g. TypeColumnCopier<TFrom, TTo> to generate a high performance copying delegate, or uses TypeRowMapper<TFrom, TTo>, FromTypeRowMapper<TFrom>, or ToTypeRowMapper<TTo> to create mappings and perform the copying etc. itself.
This interface does include the Row() method,
also see IColumn
See Dataflow Column Mapping and Mapping and Copying for more details.
Note: If the mapping commands result in duplicate mappings, an exception will be thrown. Resolve this by either of:
- Specify additional or all name parts in explicit mapping
- Change the column (or schema) names in the from and/or to rows to avoid name clashes
- Restrict auto-mapping to specific column schemas
- Map offending columns explicitly by name (which will exclude them from later auto-mappings)
Inherited Members
Namespace: actionETL
Assembly: actionETL.dll
Syntax
public interface IRowMapperCommand : IFluentInterface
Methods
AutoName()
Map automatically by name. Identical names will match, as will partial names where one or more of the
left-most parts of the name have been left out. E.g., "Person.Name.FirstName" would automatically
map to either of "FirstName" and "Name.FirstName". More matching parts take precedence over
fewer matching parts.
Column name matching is ordinal case insensitive, but a case sensitive match takes precedence over a case insensitive match.
The mapping only considers readable (see Can
Note: If there are still more than one possible mapping, an exception will be thrown. Resolve this by either of:
- Change the column names in the row(s) to avoid name clashes
- Use one of the overloads that allows restricting the auto-mapping to specific hierarchy names
- Map offending columns individually by name (which will exclude them from later mappings), before calling this auto-mapping method
Declaration
IRowMapperCommand AutoName()
Returns
| Type | Description |
|---|---|
| IRow |
The |
Exceptions
| Type | Condition |
|---|---|
| Invalid |
|
AutoName(Int32)
Map automatically by name. Identical names will match, as will partial names where one or more of the
left-most parts of the name have been left out. E.g., "Person.Name.FirstName" would automatically
map to either of "FirstName" and "Name.FirstName". More matching parts take precedence over
fewer matching parts.
Column name matching is ordinal case insensitive, but a case sensitive match takes precedence over a case insensitive match.
The mapping only considers readable (see Can
Note: If there are still more than one possible mapping, an exception will be thrown. Resolve this by either of:
- Change the column names in the row(s) to avoid name clashes
- Use one of the overloads that allows restricting the auto-mapping to specific hierarchy names
- Map offending columns individually by name (which will exclude them from later mappings), before calling this auto-mapping method
Declaration
IRowMapperCommand AutoName(int assertNumberOfMatches)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | assertNumberOfMatches | Assert number of matches. |
Returns
| Type | Description |
|---|---|
| IRow |
The |
Exceptions
| Type | Condition |
|---|---|
| Invalid |
|
AutoName(Int32, String, String)
Map automatically by name. Identical names will match, as will partial names where one or more of the
left-most parts of the name have been left out. E.g., "Person.Name.FirstName" would automatically
map to either of "FirstName" and "Name.FirstName". More matching parts take precedence over
fewer matching parts.
Column name matching is ordinal case insensitive, but a case sensitive match takes precedence over a case insensitive match.
The mapping only considers readable (see Can
Note: If there are still more than one possible mapping, an exception will be thrown. Resolve this by either of:
- Change the column names in the row(s) to avoid name clashes
- Restrict the auto-mapping to specific hierarchy names
- Map offending columns individually by name (which will exclude them from later mappings), before calling this auto-mapping method
Declaration
IRowMapperCommand AutoName(int assertNumberOfMatches, string fromHierarchyName, string toHierarchyName)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | assertNumberOfMatches | Assert number of matches. |
| String | fromHierarchyName | Hierarchy from name to include, or |
| String | toHierarchyName | Hierarchy to name to include, or |
Returns
| Type | Description |
|---|---|
| IRow |
The |
Exceptions
| Type | Condition |
|---|---|
| Invalid |
|
AutoName(String, String)
Map automatically by name. Identical names will match, as will partial names where one or more of the
left-most parts of the name have been left out. E.g., "Person.Name.FirstName" would automatically
map to either of "FirstName" and "Name.FirstName". More matching parts take precedence over
fewer matching parts.
Column name matching is ordinal case insensitive, but a case sensitive match takes precedence over a case insensitive match.
The mapping only considers readable (see Can
Note: If there are still more than one possible mapping, an exception will be thrown. Resolve this by either of:
- Change the column names in the row(s) to avoid name clashes
- Restrict the auto-mapping to specific hierarchy names
- Map offending columns individually by name (which will exclude them from later mappings), before calling this auto-mapping method
Declaration
IRowMapperCommand AutoName(string fromHierarchyName, string toHierarchyName)
Parameters
| Type | Name | Description |
|---|---|---|
| String | fromHierarchyName | Hierarchy from name to include, or |
| String | toHierarchyName | Hierarchy to name to include, or |
Returns
| Type | Description |
|---|---|
| IRow |
The |
Exceptions
| Type | Condition |
|---|---|
| Invalid |
|
Index(Int32, Int32)
Map a 'from' column to a 'to' column based on their index in
Schema
Declaration
IRowMapperCommand Index(int fromSchemaNodeListIndex, int toSchemaNodeListIndex)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | fromSchemaNodeListIndex | From index. |
| Int32 | toSchemaNodeListIndex | To index. |
Returns
| Type | Description |
|---|---|
| IRow |
The |
Exceptions
| Type | Condition |
|---|---|
| Argument |
|
| Invalid |
|
Name(String)
Map a 'from' column to a 'to' column based on their names.
Column name matching is ordinal case insensitive, but a case sensitive match takes precedence over a case insensitive match.
Declaration
IRowMapperCommand Name(string schemaNodeName)
Parameters
| Type | Name | Description |
|---|---|---|
| String | schemaNodeName | Name of both the 'from' and 'to' columns. Column schema names can optionally be omitted from the left, as long as the specified name is unique among all columns in the row. E.g., assuming "FirstName" is unique, the following can all identify the same column:
|
Returns
| Type | Description |
|---|---|
| IRow |
The |
Exceptions
| Type | Condition |
|---|---|
| Invalid |
|
| Argument |
|
Name(String, String)
Map a 'from' column to a 'to' column based on their names.
Column name matching is ordinal case insensitive, but a case sensitive match takes precedence over a case insensitive match.
Declaration
IRowMapperCommand Name(string fromSchemaNodeName, string toSchemaNodeName)
Parameters
| Type | Name | Description |
|---|---|---|
| String | fromSchemaNodeName | Name of the 'from' column. Column schema names can optionally be omitted from the left, as long as the specified name is unique among all columns in the row. E.g., assuming "FirstName" is unique, the following can all identify the same column:
|
| String | toSchemaNodeName | Name of the 'to' column. Column schema names can optionally be omitted from the left, as long as the specified name is unique among all columns in the row. E.g., assuming "FirstName" is unique, the following can all identify the same column:
|
Returns
| Type | Description |
|---|---|
| IRow |
The |
Exceptions
| Type | Condition |
|---|---|
| Invalid |
|
| Argument |
|
Row()
Map the whole row. Mutually exclusive with commands mapping individual columns. It is up to the caller to decide how to react to a whole row mapping.
Declaration
IRowMapperCommand Row()
Returns
| Type | Description |
|---|---|
| IRow |
Exceptions
| Type | Condition |
|---|---|
| Invalid |
Mapping the row as a single unit is mutually exclusive with commands mapping individual columns |