Interface IModelPropertiesBuilder<TModel, TEvent, TBuilder>
- Namespace
- Cratis.Chronicle.Projections
- Assembly
- Cratis.Chronicle.dll
Defines the builder for building properties on a model.
public interface IModelPropertiesBuilder<TModel, TEvent, TBuilder> where TBuilder : class, IModelPropertiesBuilder<TModel, TEvent, TBuilder>
Type Parameters
TModel
Model to build for.
TEvent
Event to build for.
TBuilder
Type of actual builder.
Methods
AddChild<TChildModel>(Expression<Func<TModel, IEnumerable<TChildModel>>>, Action<IAddChildBuilder<TChildModel, TEvent>>)
Start building the add child operation to a target property holding an collection of a specific child model type.
TBuilder AddChild<TChildModel>(Expression<Func<TModel, IEnumerable<TChildModel>>> targetProperty, Action<IAddChildBuilder<TChildModel, TEvent>> builderCallback)
Parameters
targetProperty
Expression<Func<TModel, IEnumerable<TChildModel>>>The collection property that will receive the child.
builderCallback
Action<IAddChildBuilder<TChildModel, TEvent>>Builder callback for building the composite key.
Returns
- TBuilder
Builder continuation.
Type Parameters
TChildModel
Type of child model.
AddChild<TChildModel>(Expression<Func<TModel, IEnumerable<TChildModel>>>, Expression<Func<TEvent, TChildModel>>)
Start building a child operation that add a child based on a property on the event.
TBuilder AddChild<TChildModel>(Expression<Func<TModel, IEnumerable<TChildModel>>> targetProperty, Expression<Func<TEvent, TChildModel>> eventProperty)
Parameters
targetProperty
Expression<Func<TModel, IEnumerable<TChildModel>>>The collection property that will receive the child.
eventProperty
Expression<Func<TEvent, TChildModel>>Event property accessor for defining the source property.
Returns
- TBuilder
Builder continuation.
Type Parameters
TChildModel
Type of child model.
Add<TProperty>(Expression<Func<TModel, TProperty>>)
Start building the add operation to a target property on the model.
IAddBuilder<TModel, TEvent, TProperty, TBuilder> Add<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)
Parameters
modelPropertyAccessor
Expression<Func<TModel, TProperty>>Model property accessor for defining the target property.
Returns
- IAddBuilder<TModel, TEvent, TProperty, TBuilder>
Builder continuation.
Type Parameters
TProperty
Type of the property.
AutoMap()
Automatically map event properties to model properties on the events added.
TBuilder AutoMap()
Returns
- TBuilder
Builder continuation.
Count<TProperty>(Expression<Func<TModel, TProperty>>)
Start building the count operation to a target property on the model.
TBuilder Count<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)
Parameters
modelPropertyAccessor
Expression<Func<TModel, TProperty>>Model property accessor for defining the target property.
Returns
- TBuilder
Builder continuation.
Type Parameters
TProperty
Type of the property.
Decrement<TProperty>(Expression<Func<TModel, TProperty>>)
Increment the value of a property on the model.
TBuilder Decrement<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)
Parameters
modelPropertyAccessor
Expression<Func<TModel, TProperty>>Model property accessor for defining the target property.
Returns
- TBuilder
Builder continuation.
Type Parameters
TProperty
Type of the property.
Increment<TProperty>(Expression<Func<TModel, TProperty>>)
Increment the value of a property on the model.
TBuilder Increment<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)
Parameters
modelPropertyAccessor
Expression<Func<TModel, TProperty>>Model property accessor for defining the target property.
Returns
- TBuilder
Builder continuation.
Type Parameters
TProperty
Type of the property.
Set(PropertyPath)
Start building the set operation to a target property on the model.
ISetBuilder<TModel, TEvent, TBuilder> Set(PropertyPath propertyPath)
Parameters
propertyPath
PropertyPathModel property path for defining the target property.
Returns
- ISetBuilder<TModel, TEvent, TBuilder>
The ISetBuilder<TModel, TEvent, TParentBuilder> to continue building on.
SetThisValue()
Start building the set operation to target the value instance itself.
ISetBuilder<TModel, TEvent, TBuilder> SetThisValue()
Returns
- ISetBuilder<TModel, TEvent, TBuilder>
The ISetBuilder<TModel, TEvent, TParentBuilder> to continue building on.
Set<TProperty>(Expression<Func<TModel, TProperty>>)
Start building the set operation to a target property on the model.
ISetBuilder<TModel, TEvent, TProperty, TBuilder> Set<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)
Parameters
modelPropertyAccessor
Expression<Func<TModel, TProperty>>Model property accessor for defining the target property.
Returns
- ISetBuilder<TModel, TEvent, TProperty, TBuilder>
The ISetBuilder<TModel, TEvent, TProperty, TParentBuilder> to continue building on.
Type Parameters
TProperty
Type of the property.
Subtract<TProperty>(Expression<Func<TModel, TProperty>>)
Start building the add operation to a target property on the model.
ISubtractBuilder<TModel, TEvent, TProperty, TBuilder> Subtract<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)
Parameters
modelPropertyAccessor
Expression<Func<TModel, TProperty>>Model property accessor for defining the target property.
Returns
- ISubtractBuilder<TModel, TEvent, TProperty, TBuilder>
Builder continuation.
Type Parameters
TProperty
Type of the property.
UsingCompositeKey<TKeyType>(Action<ICompositeKeyBuilder<TKeyType, TEvent>>)
Define what key to use based on a composite of expressions.
TBuilder UsingCompositeKey<TKeyType>(Action<ICompositeKeyBuilder<TKeyType, TEvent>> builderCallback)
Parameters
builderCallback
Action<ICompositeKeyBuilder<TKeyType, TEvent>>Builder callback for building the composite key.
Returns
- TBuilder
Builder continuation.
Type Parameters
TKeyType
Type of key.
UsingKeyFromContext<TProperty>(Expression<Func<EventContext, TProperty>>)
Define what key to use based on a value in the EventContext.
TBuilder UsingKeyFromContext<TProperty>(Expression<Func<EventContext, TProperty>> keyAccessor)
Parameters
keyAccessor
Expression<Func<EventContext, TProperty>>Accessor for the property within EventContext to use.
Returns
- TBuilder
Builder continuation.
Type Parameters
TProperty
Type of the property.
UsingKey<TProperty>(Expression<Func<TEvent, TProperty>>)
Define what key to use. This is optional, if not set - it will default to using the event source identifier on the event.
TBuilder UsingKey<TProperty>(Expression<Func<TEvent, TProperty>> keyAccessor)
Parameters
keyAccessor
Expression<Func<TEvent, TProperty>>Accessor for the property to use.
Returns
- TBuilder
Builder continuation.
Type Parameters
TProperty
Type of the property.
UsingParentCompositeKey<TKeyType>(Action<ICompositeKeyBuilder<TKeyType, TEvent>>)
Define what composite key based on properties on the event represents the parent key. This is typically used in child relationships to identify the parent model to work with.
TBuilder UsingParentCompositeKey<TKeyType>(Action<ICompositeKeyBuilder<TKeyType, TEvent>> builderCallback)
Parameters
builderCallback
Action<ICompositeKeyBuilder<TKeyType, TEvent>>Builder callback for building the composite key.
Returns
- TBuilder
Builder continuation.
Type Parameters
TKeyType
Type of key.
UsingParentKeyFromContext<TProperty>(Expression<Func<EventContext, TProperty>>)
Define what property on the event represents the parent key based on a property in the EventContext. This is typically used in child relationships to identify the parent model to work with.
TBuilder UsingParentKeyFromContext<TProperty>(Expression<Func<EventContext, TProperty>> keyAccessor)
Parameters
keyAccessor
Expression<Func<EventContext, TProperty>>Accessor for the property to use.
Returns
- TBuilder
Builder continuation.
Type Parameters
TProperty
Type of the property.
UsingParentKey<TProperty>(Expression<Func<TEvent, TProperty>>)
Define what property on the event represents the parent key. This is typically used in child relationships to identify the parent model to work with.
TBuilder UsingParentKey<TProperty>(Expression<Func<TEvent, TProperty>> keyAccessor)
Parameters
keyAccessor
Expression<Func<TEvent, TProperty>>Accessor for the property to use.
Returns
- TBuilder
Builder continuation.
Type Parameters
TProperty
Type of the property.