/// <summary> /// Create a nested component mapping. /// </summary> /// <param name="property">Component property</param> /// <param name="nestedCompositeElementAction">Action for creating the component</param> /// <example> /// HasMany(x => x.Locations) /// .Component(c => /// { /// c.Map(x => x.Name); /// c.Component(x => x.Address, addr => /// { /// addr.Map(x => x.Street); /// addr.Map(x => x.PostCode); /// }); /// }); /// </example> public void Component <TChild>(Expression <Func <T, TChild> > property, Action <CompositeElementPart <TChild> > nestedCompositeElementAction) { var nestedCompositeElement = new CompositeElementPart <TChild>(entity, property.ToMember()); nestedCompositeElementAction(nestedCompositeElement); components.Add(nestedCompositeElement); }
/// <summary> /// Maps this collection as a collection of components. /// </summary> /// <param name="action">Component mapping</param> public T Component(Action <CompositeElementPart <TChild> > action) { var part = new CompositeElementPart <TChild>(typeof(T)); action(part); componentMapping = part; return((T)this); }