Namespace LemonEdge.Core.Descriptors
Classes
ColumnDescriptor
This holds the definition of a column (including its SQL definition) against an entity.
This is defined against an entity interface on the property using the EntityProperty
ComplexTypeDescriptor
Holds the description of any interface marked with the ComplexDefinitionAttribute attribute
This holds the interface and class types for the complex type along with a label and default image
This should not be confused with an EntityDescriptor which holds the definition for an actual entity that is stored in the database. ComplexTypes are used for reporting data onlyCorePropEntityImportColDefinition
Indicates this is a standard property import column defintion for core properties (IsBasePropertyName(String)) against an entity in the system
DataSourceEntityImportColDefinition
Indicates this is a data source entity import column definition.
Each entity has a collection of these corresponding to each IDataSourceType in the system
EntityDescriptor
This is the main entity descriptor class that contains all the information about a given entity.
The system automatically creates these entitydescriptors for all entities in the system dynamically from their EntityDefinition and associated attributes
EntityDescriptorFactory
The main factory for creating and providing EntityDescriptor and ComplexTypeDescriptor for all items in the system including those defined by custom objects and addins
This automatically reloads whenever changes to custom objects or addins are detected within the system
EntityDescriptorTemplate
All EntityDescriptors have a template for describing the columns that can be used for importing/exporting data automatically for the entity
The system automatically takes care of this for you from the properties, keys and relationships defined against your entity
However you can override this behaviour to provide custom properties and actions using EntityDescriptorTemplateExtender and IEntityDescriptorImportExtenderThe template is responsible for providing a list of all columns (EntityImportColDefinition) that can be used for importing/exporting
EntityDescriptorTemplateExtender
This is the main class for extending the behaviour of the default system EntityDescriptorTemplate automatically created for all entities
This allows you to override the default behaviour to add custom actions to be processed during imports, or to create a custom function, instead of the table data, to return custom fields which can be specified here instead of the actual entity properties.
This is used by ITransaction to create custom columns for every defined ITransactionTypeValueBy implementing this class for any custom type, the system will use this instead of the default template for importing/exporting and querying
EntityImportActionColDefinition
Indicates this entity import column definition is for a custom action and does not represent actual data for this entity held in the system
The custom process to run when this column is imported can be implemented through EntityDescriptorTemplateExtender
Typically the valid set of custom actions is held by an enum, and so the user can see that in templates can be set with SetDefaultValueToEnumOptions<T>()EntityImportColDefinition
This is the base class that defines a property against an entity that can be imported/exported
This commonly holds the property information of the same property on the entity, and for relationship properties will have child definitions holding the key properties to uniquely identify that entity relationship
They can also contain custom properties that do not exist on the entity if you are providing custom sql instead of the table for the entity. That can be done via EntityDescriptorTemplateExtenderEntityLinkProperty
Indicates this property is a property that holds the SetName of an entity type link column (IsEntityTypeLink)
This is used in conjunction with a property that holds an id of a relationship to an entity that can be any parent entity (EntityLinkToAnyParentRelationship)
This property holds the set name to the entity type that the link is to. The link global unique id of the entity itself is the parent property of this oneEntityRelationship
Holds the defintion of a relationship between two entities and their associated properties
Normally defined through one of the PropRelationship inherited attributes
ObseleteEntityDescriptor
Whenever an entity is no longer used in the system this class can be inherited to provide details about it so that it can be removed from the database
If you just remove an entity then the system may be unable to upgrade the database if other entities are referred to by the now deleted entity. Database constraints may prevent them being upgraded.
By providing the details for this old entity the system can automatically update all elements of the database and remove the old entityPivotPropImportColDefinition
An entity import column defintion for properties that are pivot header columns of a sub table entity
PropEntityImportColDefinition
The standard import column defintion for a property against an entity in the system
This property can be a real property in the database or not and managed by the sql
Interfaces
IEntityDescriptorImportExtender
Represents a class that can be used for assisting with importing data into a specified entity type
By default the system automatically handles importing an entity through the property names and values from a data source (such as a file) throguh our data integration and mapping tools.
However you can extend this behaviour to be able to import from other property names that are not actually properties on the entity, or even to perform custom actionsEnums
EntityImportColumnAction
The list of allowed values that are parsed when importing data from the ImportActionPropertyName column
If this value does not parse exactly to any of these enum values it is assumed to take the value None and the row will not be imported