The Property
object defines an Entity
property and its charateristics.
A YAML configuration example is as follows:
properties: [
{ name: Id, type: Guid, text: '{{Employee}} identifier', primaryKey: true, dataName: EmployeeId, dataAutoGenerated: true },
{ name: FirstName, type: string },
{ name: LastName, type: string },
{ name: Gender, type: RefDataNamespace.Gender, dataName: GenderCode },
{ name: Birthday, type: DateTime, dateTimeTransform: DateOnly },
{ name: ETag, type: string },
{ name: ChangeLog, type: ChangeLog }
]
The Property
object supports a number of properties that control the generated code output. These properties are separated into a series of logical categories.
Category | Description |
---|---|
Key |
Provides the key configuration. |
Property |
Provides additional Property configuration. |
RefData |
Provides the Reference Data configuration. |
Serialization |
Provides the Serialization configuration. |
Data |
Provides the generic Data-layer configuration. |
Database |
Provides the specific Database (ADO.NET) configuration where Entity.AutoImplement or Operation.AutoImplement is Database . |
EntityFramework |
Provides the specific Entity Framework (EF) configuration where Entity.AutoImplement or Operation.AutoImplement is EntityFramework . |
Cosmos |
Provides the specific Cosmos DB configuration where Entity.AutoImplement or Operation.AutoImplement is Cosmos . |
OData |
Provides the specific OData configuration where Entity.AutoImplement or Operation.AutoImplement is OData . |
HttpAgent |
Provides the specific HTTP Agent configuration where Entity.AutoImplement or Operation.AutoImplement is HttpAgent . |
Annotation |
Provides additional property Annotation configuration. |
gRPC |
Provides the gRPC configuration. |
The properties with a bold name are those that are more typically used (considered more important).
Provides the key configuration.
Property | Description |
---|---|
name |
The unique property name. [Mandatory] |
text |
The overriding text for use in comments. † By default the Text will be the Name reformatted as sentence casing. Depending on whether the Type is bool , will appear in one of the two generated sentences. Where not bool it will be: Gets or sets a value indicating whether {text}.'. Otherwise, it will be: Gets or sets the {text}.'. To create a <see cref="XXX"/> within use moustache shorthand (e.g. {{Xxx}}). To have the text used as-is prefix with a + plus-sign character. |
modelText |
The overriding model text for use in comments. † By default the ModelText will be the Name reformatted as sentence casing. Depending on whether the Type is bool , will appear in one of the two generated sentences. Where not bool it will be: Gets or sets a value indicating whether {text}.'. Otherwise, it will be: Gets or sets the {text}.'. To create a <see cref="XXX"/> within use moustache shorthand (e.g. {{Xxx}}). To have the text used as-is prefix with a + plus-sign character. |
type |
The .NET Type .† Defaults to string . To reference a Reference Data Type always prefix with RefDataNamespace (e.g. RefDataNamespace.Gender ) or shortcut ^ (e.g. ^Gender ). This will ensure that the appropriate Reference Data using statement is used. Shortcut: Where the Type starts with (prefix) RefDataNamespace. or ^ , and the correspondong RefDataType attribute is not specified it will automatically default the RefDataType to string. |
nullable |
Indicates whether the .NET Type should be declared as nullable; e.g. string? . Will be inferred where the Type is denoted as nullable; i.e. suffixed by a ? . |
inherited |
Indicates whether the property is inherited and therefore should not be output within the generated Entity class. |
privateName |
The overriding private name. † Overrides the Name to be used for private fields. By default reformatted from Name ; e.g. FirstName as _firstName . |
argumentName |
The overriding argument name. † Overrides the Name to be used for argument parameters. By default reformatted from Name ; e.g. FirstName as firstName . |
Provides additional Property configuration.
Property | Description |
---|---|
primaryKey |
Indicates whether the property is considered part of the primary (unique) key. † This is also used to simplify the parameter specification for an Entity Operation by inferrence. |
isEntity |
Indicates that the property Type is another generated entity / collection and therefore specific capabilities can be assumed (e.g. CopyFrom and Clone ).† Will be inferred (default to true ) where the Type is ChangeLog or the Type is found as another Entity within the code-generation configuration file. |
immutable |
Indicates that the value is immutable and therefore cannot be changed once set. |
dateTimeTransform |
The DateTime transformation to be performed on Set and CleanUp . Valid options are: UseDefault , None , DateOnly , DateTimeLocal , DateTimeUtc , DateTimeUnspecified .† Defaults to UseDefault . This is only applied where the Type is DateTime . |
stringTrim |
The string trimming of white space characters to be performed on Set and CleanUp . Valid options are: UseDefault , None , Start , End , Both .† Defaults to UseDefault . This is only applied where the Type is string . |
stringTransform |
The string transformation to be performed on Set and CleanUp . Valid options are: UseDefault , None , NullToEmpty , EmptyToNull .† Defaults to UseDefault . This is only applied where the Type is string . |
stringCasing |
The string casing to be performed on Set and CleanUp . Valid options are: UseDefault , None , Lower , Upper , Title .† Defaults to UseDefault . This is only applied where the Type is string . |
autoCreate |
Indicates whether an instance of the Type is to be automatically created/instantiated when the property is first accessed (i.e. lazy instantiation). |
default |
The C# code to default the value. † Where the Type is string then the specified default value will need to be delimited. Any valid value assignment C# code can be used. |
partitionKey |
Indicates whether the property is considered part of the Partition Key. † This will implement IPartitionKey for the generated entity. |
cacheKey |
Indicates whether the property is considered part of the Cache Key. † This will implement ICacheKey for the generated entity. |
internalOnly |
Indicates whether the property is for internal use only; declared in Business entities only. † In this instance the Property will be excluded from the Common entity declaration and Business JSON serialization. |
Provides the Reference Data configuration.
Property | Description |
---|---|
refDataType |
The underlying Reference Data Type that is also used as the Reference Data serialization identifier (SID). Valid options are: string , int , Guid .† Defaults to string (being the ReferenceDataBase.Code ) where not specified and the corresponding Type starts with (prefix) RefDataNamespace. or ^ . Note: an Id of type string is currently not supported; the use of the Code is the recommended approach. |
refDataList |
Indicates that the Reference Data property is to be a serializable list (ReferenceDataSidList ).† This is required to enable a list of Reference Data values (as per RefDataType ) to be passed as an argument for example. |
refDataText |
Indicates whether a corresponding Text property is added when generating a Reference Data property, overriding the Entity.RefDataText selection. Valid options are: Optional , Always , Never .† This is used where serializing within the Web API Controller and the ExecutionContext.IsRefDataTextSerializationEnabled is set to true (which is automatically set where the url contains $text=true ).Optional indicates when ExecutionContext.IsRefDataTextSerializationEnabled is set to true then a value is output, Always indicates that the value is always output, and Never indicates that feature is turned off. |
refDataTextName |
The corresponding reference data Text property name; defaults to Name + 'Text'. |
refDataMapping |
Indicates whether the property should use the underlying Reference Data mapping capabilities. † Mapped properties are a special Reference Data property type that ensure value uniqueness; this allows the likes of additional to/from mappings to occur between systems where applicable. |
Provides the Serialization configuration.
Property | Description |
---|---|
jsonName |
The JSON property name. † Defaults to ArgumentName where not specified (i.e. camelCase); however, where the property is ETag it will default to the Config.ETagJsonName . |
jsonDataModelName |
The JSON property name for the corresponding data model (see Entity.DataModel ).† Defaults to JsonName where not specified. |
serializationIgnore |
Indicates whether the property is not to be serialized. † All properties are serialized by default. |
serializationAlwaysInclude |
Indicates whether to include the value (default or otherwise) when serializing. |
dataModelIgnore |
Indicates whether the property is to be included within the data model. † All properties are included in the data model by default. |
dataModelSerializationIgnore |
Indicates whether the property is not to be serialized where outputting as a data model. † All properties are included in the data model by default. |
Provides the generic Data-layer configuration.
Property | Description |
---|---|
dataName |
The data name where Entity.AutoImplement is selected. † Defaults to the property Name . Represents the column name for a Database , or the correspinding property name for the other options. |
dataConverter |
The data Converter class name where Entity.AutoImplement is selected.† A Converter is used to convert a data source value to/from a .NET Type where no standard data conversion can be applied. Where this value is suffixed by <T> or {T} this will automatically set Type . |
dataMapperIgnore |
Indicates whether the property should be ignored (excluded) from the Data -layer / data Mapper generated output.† All properties are included by default. |
dataAutoGenerated |
Indicates whether the PrimaryKey property value is automatically generated by the data source on Create . |
dataOperationTypes |
The operations types (ExecutionContext.OperationType ) selection to enable inclusion and exclusion of property mapping. Valid options are: Any , AnyExceptCreate , AnyExceptUpdate , AnyExceptGet , Get , Create , Update , Delete .† Defaults to Any . |
Provides the specific Database (ADO.NET) configuration where Entity.AutoImplement
or Operation.AutoImplement
is Database
.
Property | Description |
---|---|
databaseMapper |
The database property Mapper class name where Entity.AutoImplement is selected.† A Mapper is used to map a data source value to/from a .NET complex Type (i.e. class with one or more properties). |
databaseIgnore |
Indicates whether the property should be ignored (excluded) from the database Mapper generated output. |
databaseDbType |
The database DbType override (versus inferring from the corresponding .NET Type).† Overrides the inferred database type; i.e. can specify Date or DateTime2 , for .NET Type System.DateTime . |
Provides the specific Entity Framework (EF) configuration where Entity.AutoImplement
or Operation.AutoImplement
is EntityFramework
.
Property | Description |
---|---|
entityFrameworkMapper |
The Entity Framework Mapper approach for the property. Valid options are: Set , Ignore , Map , Flatten .† Defaults to Set . |
Provides the specific Cosmos DB configuration where Entity.AutoImplement
or Operation.AutoImplement
is Cosmos
.
Property | Description |
---|---|
cosmosMapper |
The Cosmos Mapper approach for the property. Valid options are: Set , Ignore , Map , Flatten .† Defaults to Set . |
Provides the specific OData configuration where Entity.AutoImplement
or Operation.AutoImplement
is OData
.
Property | Description |
---|---|
odataMapper |
The OData Mapper approach for the property. Valid options are: Map , Ignore , Skip .† Defaults to Map which indicates the property will be explicitly mapped. A value of Ignore will explicitly Ignore , whilst a value of Skip will skip code-generated mapping altogether. |
Provides the specific HTTP Agent configuration where Entity.AutoImplement
or Operation.AutoImplement
is HttpAgent
.
Property | Description |
---|---|
httpAgentMapper |
The HttpAgent Mapper approach for the property. Valid options are: Set , Ignore , Map , Flatten .† Defaults to Set . |
Provides additional property Annotation configuration.
Property | Description |
---|---|
displayName |
The display name used in the likes of error messages for the property. † Defaults to the Name as sentence case. |
annotation1 |
The property annotation (e.g. attribute) declaration code. |
annotation2 |
The property annotation (e.g. attribute) declaration code. |
annotation3 |
The property annotation (e.g. attribute) declaration code. |
Provides the gRPC configuration.
Property | Description |
---|---|
grpcFieldNo |
The unique (immutable) field number required to enable gRPC support. |
grpcType |
The underlying gRPC data type; will be inferred where not specified. |